1.初始化默认先调用 __new__() 方法,再调用 __init__() 方法。
2.初始化对象是在 __new__() 中。
测试:
>>> class T:
def __new__(self, val):
print(val)
self.val = val
x = type('X', (), {'a': 123})
self.__init__(x)
return x
def __init__(self):
print('init..', self.a)
>>>
>>> t = T(1)
1
init.. 123
>>> t
<class '__main__.X'>
>>> t.a
123
>>>
注意 __new__(self) 和 __init__(self) 中 self 的不同。