이 튜토리얼에서는 객체 지향 프로그래밍 접근 방식을 위한 Python의 추상화 개념에 대해 설명합니다.
기본적으로 추상화는 사용자로부터 프로세스 또는 메서드의 내부 구현을 숨기는 데 중점을 둡니다. 따라서 사용자는 자신이 무엇을 하고 있는지 알지만 작업이 어떻게 수행되고 있는지 모릅니다.
<스크립트 비동기 src =" https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client = ca-pub-6959883099270890 "교차 출처 = " 익명 ">
& nbsp;
파이썬에서 추상화란 무엇입니까?
예를 들어, 사람들은 자동차를 수천 개의 개별 부품 모음으로 생각하지 않습니다. 대신, 그들은 그것을 고유한 동작을 가진 잘 정의된 객체로 봅니다. 이 추상화를 통해 사람들은 자동차를 구성하는 부품의 복잡성을 인식하지 않고도 자동차를 운전할 수 있습니다. 그들은 엔진 변속기 및 제동 시스템의 세부 사항을 무시할 수 있습니다. 대신 전체 개체를 사용할 수 있습니다.
추상화를 조작하고 계층적 분류를 사용하는 강력한 방법입니다. 이를 통해 복잡한 시스템의 의미 체계를 계층화하여 관리하기 쉬운 조각으로 나눌 수 있습니다. 외부에서 자동차는 단일 개체입니다. 안으로 들어가면 자동차가 스티어링, 브레이크, 오디오 시스템, 안전 벨트 등의 여러 하위 시스템으로 구성되어 있음을 알 수 있습니다. 차례로 이러한 하위 시스템 각각은 더 작은 블록으로 구성됩니다.
요점은 우리가 운전한다는 것입니다. 계층적 추상화를 사용하는 자동차(또는 기타 복잡한 시스템).
이것은 OOP 개념을 사용하는 컴퓨터 프로그램에도 적용될 수 있습니다. 이것이 객체 지향 프로그래밍의 핵심입니다.
Python의 추상 클래스 및 메서드
추상 클래스를 선언하려면 먼저 abc
모듈을 가져와야 합니다. . 예를 들어 보겠습니다.
from abc import ABC class abs_class(ABC): #abstract methods
여기 abs_class
& it is abstract 추상 메서드 또는 다른 메서드를 정의할 수 있는 클래스입니다.
속성으로 추상 클래스는 여러 추상 메서드를 가질 수 있으며 임의의 수와 공존할 수 있습니다. 다른 방법의. 예를 들어, 아래를 볼 수 있습니다.
from abc import ABC, abstractmethod class abs_class (ABC): #normal method def method (self): # 메소드 정의 @abstractmethod def Abs_method (self): #Abs_method 정의
여기 method()
& normal 메소드, 반면에 Abs_method()
&an 추상 메소드 abc 모듈에서 @abstractmethod
를 구현합니다.
예제
이제 추상 클래스와 메소드에 대해 알았으므로 예제를 살펴보겠습니다.
from abc import ABC, abstractmethod class Absclass(ABC): def print(self, x): print("전달된 값:", x) @abstractmethod def task (self): print ("We are inside Absclass task") class test_class (Absclass): def task (self): print ("We are inside test_class task") class example_class (Absclass): def task (self): print("우리는 example_class 작업 내부에 있습니다") #test_class의 객체가 생성됨 test_obj = test_class() test_obj.task() test_obj.print(100) # example_class의 객체가 생성됨 ex ample_obj = example_class() example_obj.task( ) example_obj .print (200) print ("test_obj는 Absclass의 인스턴스입니까?", isinstance (test_obj, Absclass)) print ("example_obj는 Absclass의 인스턴스입니까?", isinstance (example_obj, Absclass))
출력:
여기서,
task()
메서드와 print()
메서드가 포함됩니다. 이 추상 클래스에서 상속된 다른 두 클래스는 test_class
및 example_class
입니다. 둘 다 고유한 task()
메서드(추상 메서드 확장)를 가지고 있습니다.
사용자가 test_class 및 example_class 클래스에서 개체를 만들고 task() 메서드를 호출한 후
두 클래스 모두에 숨겨진 task()
메서드 정의가 작동합니다. 이러한 정의는 사용자에게 숨겨져 있습니다. 추상 클래스 Absclass
의 추상 메소드 task()
는 실제로 호출되지 않습니다.
하지만 print()
메서드는 test_obj 및 example_obj에서와 같이 호출되며, print()
Absclass 메서드는 추상 메서드가 아니기 때문에 호출됩니다.
참고: 추상 클래스를 인스턴스화할 수 없습니다. . 이로 인해 오류가 발생합니다.