一、先调用__new__方法创建空的对象
二、再调用__init__方法进行对象进行实例化
三、有特殊类会使用__new__方法进行对象实例化,例如:tuple
四、实例:
class A:
def __new__(cls, *args, **kwargs):
return super().__new__(cls, *args, **kwargs)
def __init__(self, *args, **kwargs):
self.args = args
self.kwargs = kwargs
五、tuple的子类,自定义实现实例化方法:
tuple1 = (1, 2, 3, ‘a,b,c‘, [1, 2, 3], 0)
class IntTuple(tuple):
def __new__(cls, *args):
t, = args
f = (x for x in t if isinstance(x, int) and x > 0)
return super().__new__(cls, f)
res = IntTuple(tuple1)
print(res)
原文:https://www.cnblogs.com/inflame/p/14848149.html