Python中 __new__ 和 __init__ 方法

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 的不同。

 

展开阅读全文