只要是面向对象的编程语言,类的实例化一定包含两个步骤:
(1)在内存中创建对象,即开辟一块内存空间来存放类的实例化对象(Instance);
(2)初始化对象,即给实例的属性赋予初始值。
在 python 中,第一步由 __new__ 函数负责,第二步由 __init__ 函数负责。
__new__的返回值是__init__中的self
如果__new__方法返回None,则__init__方法不会被执行,并且创建空对象时只能调用父类中的__new__方法,而不能调用毫无关系的类的__new__方法
class Foo(): def __new__(Foo, age,name): obj=super().__new__(Foo) print('obj 的id:',id(obj)) print(obj.__dict__) return obj def __init__(self,age,name): print(self.__dict__) self.age=age self.name=name print(self.__dict__) print('self的id:',id(self)) f1=Foo(100,'yyy') print('f1 的id:',id(f1)) print(f1.__dict__)
打印结果:
obj 的id: 2867407950352
{}
{}
{'age': 100, 'name': 'yyy'}
self的id: 2867407950352
f1 的id: 2867407950352
{'age': 100, 'name': 'yyy'}
标签:__,name,self,print,new,id,cls From: https://www.cnblogs.com/yyyjw/p/17928942.html