我正在玩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
不知何故類方法__ __新和__ __的init被覆蓋,所以解釋只是跳過他們。任何人都可以解釋這個東西
感謝您的幫助。
這是以其他方式工作,並非因此。 – alexvassel