저는 Python 2.7에서 메타 클래스를 사용하고 있습니다. 그래서 다음과 같습니다 코드 생성 :사용자 정의 메타 클래스 동작이있는 Python 메타 클래스
class M(type):
def __new__(meta, name, parents, attrs):
print 'In meta new'
return super(meta, meta).__new__(meta, name, parents, attrs)
def __init__(cls, *args, **kwargs):
print 'In meta init'
def __call__(cls, *attr, **val):
print 'In meta call'
return super(cls, cls).__new__(cls)
class A(object):
__metaclass__ = M
def __new__(cls):
print 'In class new'
return super(cls, cls).__new__(cls)
def __init__(self):
print 'In object init'
def __call__(self):
print 'In object call'
을하지만 출력이 나를 혼란 :
A()
In meta new
In meta init
In meta call
어떻게 든 클래스 방법 __ 새로운 __ 및 __ 초기화 __ 오버라이드 (override), 그래서 통역은 단지 그들을 건너 뛸 수 있었다. 누구든지이 물건을 설명 할 수 있습니까?
도움 주셔서 감사합니다.
이것은 다른 이유로 작동하지 않습니다. – alexvassel