Python에서 추상 클래스 만들기

Najwa Riyaz 2023년1월30일
  1. Python 3.4+-ABC모듈에서 상속하여 Python에서 추상 클래스 만들기
  2. Python 3.0+-ABCMeta모듈에서 상속하여 Python에서 추상 클래스 만들기
  3. 클래스가 파이썬에서 추상인지 아닌지 확인하는 방법
Python에서 추상 클래스 만들기

추상 클래스는 인스턴스화 할 수 없기 때문에 제한된 클래스입니다. 객체를 만드는 데 사용할 수 없습니다. 다른 클래스에서만 상속 될 수 있습니다.

추상 클래스는 전체 추상 클래스를 구현하지 않고도 여러 하위 클래스가 상속 할 수있는 공통 함수 / 동작을 정의하는 것을 목표로합니다.

Python에서는 Python 버전에 따라 다양한 방식으로 추상 클래스 기반을 만들 수 있습니다.

Python 3.4+-ABC모듈에서 상속하여 Python에서 추상 클래스 만들기

Python 3.4에서 추상 클래스를 만듭니다.

  1. ABC(추상 기본 클래스) 모듈을 가져옵니다.
from abc import ABC, abstractmethod
  1. @abstractmethod데코레이터를 사용하여 추상 메소드를 선언하십시오.
from abc import ABC, abstractmethod


class ExampleAbstractClass(ABC):
    @abstractmethod
    def abstractmethod(self):
        pass

아래는Vehicle추상 클래스에CarBike라는 두 개의 하위 클래스가있는 예입니다. CarBike클래스는 고유하게 구현됩니다.

from abc import ABC, abstractmethod


class Vehicle(ABC):
    @abstractmethod
    def numberofwheels(self):
        pass


class Car(Vehicle):
    def numberofwheels(self):
        print("A Car has 4 wheels")


class Bike(Vehicle):
    def numberofwheels(self):
        print("A Bike has 2 wheels")


C = Car()
C.numberofwheels()

B = Bike()
B.numberofwheels()

출력:

A Car has 4 wheels
A Bike has 2 wheels

Python 3.0+-ABCMeta모듈에서 상속하여 Python에서 추상 클래스 만들기

Python 3.0 이상에서 추상 클래스를 만듭니다.

  1. ABCMeta(추상 기본 클래스) 모듈을 가져옵니다.
from abc import ABCMeta, abstractmethod
  1. @abstractmethod데코레이터를 사용하여 추상 메소드를 선언하고metaclass=ABCMeta를 언급합니다.
from abc import ABCMeta, abstractmethod


class Example2AbstractClass(metaclass=ABCMeta):
    @abstractmethod
    def abstractmethod2(self):
        pass

아래는 예입니다.

from abc import ABCMeta, abstractmethod


class Vehicle(metaclass=ABCMeta):
    @abstractmethod
    def numberofwheels(self):
        pass


class Car(Vehicle):
    def numberofwheels(self):
        print("A Car has 4 wheels")


class Bike(Vehicle):
    def numberofwheels(self):
        print("A Bike has 2 wheels")


C = Car()
C.numberofwheels()

B = Bike()
B.numberofwheels()

출력:

A Car has 4 wheels
A Bike has 2 wheels

클래스가 파이썬에서 추상인지 아닌지 확인하는 방법

생성 된 클래스가 실제로 추상 클래스인지 확인하려면 클래스를 인스턴스화해야합니다. 추상 클래스는 인스턴스화를 허용하지 않고 오류를 발생시킵니다.

예를 들어 아래와 같이 초록을 인스턴스화하면.

x = ExampleAbstractClass()

그런 다음 오류가 표시됩니다.

Can't instantiate abstract class ExampleAbstractClass with abstract methods abstractmethod

관련 문장 - Python Class