__ new __ 在python中新建一个对象时会自动被调用
给对象分配空间
如下面的代码所打印输出的
class TEST(object):
#构造函数的形参列表一般和成员变量有关【主要给成员变量赋值】
def __new__(cls, *args, **kwargs):
print(super().__new__(cls))
return super().__new__(cls)
a = TEST()
这里我将 __ new__ 重写后又调用了父类的 __ new __
那么为什么在调用时需要添加cls,因为他是静态方法,不添加cls,代表谁呢。
__new__至少要有一个参数cls,代表要实例化的类
至于为什么他是静态方法,可能一般不会用到类和属性的操作
查阅资料后发现这类方法被称为构造函数,不同于普通的方法。
构造函数在创建对象的过程中是自动被调用的
在基类中的定义是这样的,
@staticmethod # known case of __new__
def __new__(cls, *more): # known special case of object.__new__
""" Create and return a new object. See help(type) for accurate signature. """
pass