Python面向对象编程
__new __
当使用“类名([实参])”创建实例对象时,Python解释器的主要处理过程包括两大步:
1、使用特殊方法__new__创建实例对象
首先会查找该类对象是否实现了特殊方法_new__(),如果没有实现,则去父类中依次查找,直到类对象object。
2、调用特殊方法__init__()对创建的实例对象进行初始化
new()返回的实例对象会作为实参被自动传递给__init__()的第一个形参self。
class Parent(object):
def __new__(cls, *args, **kwargs):
pass
class Child(Parent):
def __init__(self,name):
pass
class Parent(object):
def __new__(cls, *args, **kwargs):
print("父类的__new__()被调用,其形参cls对应实参的id:",id(cls))
#cls接收的是子类child
obj = super().__new__(cls