Python의 메타클래스에 대한 자세한 설명

高洛峰
풀어 주다: 2017-03-16 16:57:44
원래의
1276명이 탐색했습니다.

메타클래스는 일반적으로 클래스를 생성하는 데 사용됩니다. 클래스 정의를 실행할 때 인터프리터는 클래스의 올바른 메타클래스를 알아야 합니다. 인터프리터는 먼저 클래스속성메타클래스를 찾습니다. 이 속성이 존재하는 경우 이 속성을 이 클래스에 메타클래스로 할당합니다. 이 속성이 정의되지 않은 경우 상위 클래스에서 메타클래스를 찾습니다. 메타클래스 속성이 아직 발견되지 않으면 인터프리터는 메타클래스라는 전역 변수 를 확인하고 존재하면 이를 사용합니다. 메타클래스로 . 그렇지 않은 경우 클래스는 메타클래스로 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿