类对象初始化过程

一、先调用__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)
posted @ 2021-06-04 09:14  只管去做-王炸  阅读(138)  评论(0)    收藏  举报