메타클래스는 일반적으로 클래스를 생성하는 데 사용됩니다. 클래스 정의를 실행할 때 인터프리터는 클래스의 올바른 메타클래스를 알아야 합니다. 인터프리터는 먼저 클래스속성메타클래스를 찾습니다. 이 속성이 존재하는 경우 이 속성을 이 클래스에 메타클래스로 할당합니다. 이 속성이 정의되지 않은 경우 상위 클래스에서 메타클래스를 찾습니다. 메타클래스 속성이 아직 발견되지 않으면 인터프리터는 메타클래스라는 전역 변수 를 확인하고 존재하면 이를 사용합니다. 메타클래스로 . 그렇지 않은 경우 클래스는 메타클래스로 type.ClassType을 사용하는 전통적인 클래스입니다.
클래스 정의를 실행할 때 이 클래스의 올바른(일반적으로 기본) 메타클래스가 확인됩니다. 메타클래스는 (일반적으로) 세 가지 매개변수(기본 클래스의 클래스 이름)를 전달합니다. 데이터 튜플과 (클래스) 속성 사전을 상속합니다.
메타클래스는 언제 생성되나요?
#!/usr/bin/env python print '1. Metaclass declaration' class Meta(type): def init(cls, name, bases, attrd): super(Meta,cls).init(name,bases,attrd) print '3. Create class %r' % (name) print '2. Class Foo declaration' class Foo(object): metaclass=Meta def init(self): print '*. Init class %r' %(self.class.name) # 何问起 hovertree.com print '4. Class Foo f1 instantiation' f1=Foo() print '5. Class Foo f2 instantiation' f2=Foo() print 'END' 输出
결과:
1. 메타클래스 선언
2. 클래스 Foo 선언
3. 'Foo' 클래스 생성
4 . 클래스 Foo f1 인스턴스화
*. 클래스 'Foo' 초기화
5. 클래스 Foo f2 인스턴스화
*.
클래스가 선언되면 메타클래스에 있는 메소드들이 실행되는 것을 볼 수 있는데, 앞으로는
객체클래스를 정의하면 그 클래스의 init() 메소드만 실행된다. MetaClass init()의 init() 메소드는 클래스가 선언될 때 한 번만 실행됩니다.
위 내용은 Python의 메타클래스에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!