>  기사  >  백엔드 개발  >  Python의 메타클래스란 무엇입니까?

Python의 메타클래스란 무엇입니까?

little bottle
little bottle원래의
2019-05-24 17:36:314142검색

파이썬에서 메타클래스는 클래스를 생성하는 데 사용되는 객체를 말합니다. Python의 type() 함수는 실제로 메타클래스입니다. type() 함수는 모든 클래스의 메타클래스를 만드는 데 사용됩니다. 사용자 정의 메타클래스를 생성하려면 유형에서도 상속해야 합니다.

Python의 메타클래스란 무엇입니까?

파이썬에서는 클래스 키워드를 사용하여 클래스를 생성할 때 Python 인터프리터가 클래스 정의의 구문을 스캔한 다음 type() 함수를 호출하여 클래스를 생성합니다. 그러면 무엇이 클래스를 생성하는지 아시나요? 사실 그는 메타클래스입니다.

메타클래스란 무엇인가요?

메타클래스는 실제로 클래스를 생성하는 데 사용되는 개체입니다.

이해를 돕기 위해 이렇게 생각하면 됩니다. 클래스를 생성하여 클래스의 인스턴스를 생성하고, 마찬가지로 메타클래스를 생성하여 클래스를 생성합니다.

메타클래스는 클래스의 클래스(인스턴스)입니다, 다음과 같습니다:

Metaclass() = class
class() = object # object==>实例

메타클래스가 무엇인지 이해했다면, type() 함수를 다시 살펴보겠습니다.

사실 type은 메타클래스이고, type은 모든 클래스를 생성하는 데 사용하는 메타클래스입니다. (자체 메타클래스를 생성하려면 유형에서도 상속해야 함)

메타클래스 작동 방식:

다음 예를 살펴보겠습니다.

class ReedSunMetaclass(type):
    pass
class Foo(object, metaclass = ReedSunMetaclass): 
    pass
class Bar(Foo):
    pass

먼저, 메타클래스를 생성합니다. ReedSunMetaclass

(참고! 기본적으로 메타클래스의 클래스 이름은 항상 Metaclass로 끝나서 이것이 메타클래스임을 명확하게 나타냅니다.)

그런 다음 메타클래스 ReedSunMetaclass를 사용하여 Foo 클래스를 만듭니다.

(동시에 Foo 클래스의 __metaclass__ 속성은 ReedSunMetaclass가 됩니다).

마지막으로 Foo에서 상속받은 Bar 서브클래스를 만들었습니다.

이 단계가 Python 내에서 어떻게 수행되는지 이해해 봅시다.

부모 클래스 Foo의 경우 Python은 클래스 정의에서 __metaclass__ 속성을 찾습니다. 만약 발견되면 Python은 Foo 클래스를 생성합니다. 찾을 수 없으면 내장 유형을 사용하여 클래스를 만듭니다. 분명히 발견되었습니다.

하위 클래스 Bar의 경우 Python은 먼저 하위 클래스에서 __metaclass__ 속성을 찾습니다. 발견되면 Python은 이를 사용하여 Bar 클래스를 생성합니다. 유형이 나타날 때까지 상위 클래스에서 검색합니다. 분명히 부모 클래스에서 발견됩니다.

메타클래스를 사용하면 한 가지 이점을 볼 수 있습니다. 즉, 하위 클래스가 암시적으로 무언가를 상속할 수 있다는 것입니다.

위 내용은 Python의 메타클래스란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.