programing

ABC를 사용하는 것과 ABC를 사용하는 것 사이에 차이점이 있습니까?

lovejava 2023. 5. 4. 17:50

ABC를 사용하는 것과 ABC를 사용하는 것 사이에 차이점이 있습니까?

Python 3.4+에서는

class Foo(abc.ABC):
    ...

아니면 할 수 있습니다.

class Foo(metaclass=abc.ABCMeta):
    ...

제가 알아야 할 두 가지 차이점이 있습니까?

abc.ABC기본적으로 한 층만 더.metaclass=abc.ABCMeta.예abc.ABC메타 클래스를 암시적으로 정의합니다.

(출처: https://hg.python.org/cpython/file/3.4/Lib/abc.py#l234)

class ABC(metaclass=ABCMeta):
    """Helper class that provides a standard way to create an ABC using
    inheritance.
    """
    pass

유일한 차이점은 전자의 경우 단순 상속이 필요하고 후자의 경우 메타 클래스를 지정해야 한다는 것입니다.

Python 3.4의 새로운 기능(내 기능 강조):

신반ABC가지다ABCMeta메타 클래스로서.사용.ABC기본 클래스가 지정하는 것과 본질적으로 동일한 효과를 가지므로metaclass=abc.ABCMeta입력하기 쉽고 읽기 쉽습니다.


관련 문제: 다음을 직접 호출하는 대신 상속을 통해 추상 기본 클래스__metaclass__

언급URL : https://stackoverflow.com/questions/33335005/is-there-any-difference-between-using-abc-vs-abcmeta