当一个类实例被创建时,__init__()
方法会自动执行
目的为执行一些对象的必要的初始化工作
1 | def __init__(self, name, symbol): |
我们通过实现init()方法来初始化对象。当一个对象被创建,
Python首先创建一个空对象并为该新对象调用__init__()
方法。
这个方法函数通常用来创建对象的实例变量并执行任何其他一次性处理。
注意:
__init__
只能返回None对象,不能返回任何实例化返回值- 在其他面向对象编程中通常使用 this
1 | class MyClass(object): |
第一个参数cls
是当前正在实例化的类。
如果要得到当前类的实例,应当在当前类中的new()
方法语句中调用当前类的父类 的new()
方法。
例如,如果当前类是直接继承自object
,那当前类的new()方法返回的对象应该为:1
2
3def __new__(cls, *args, **kwargs):
...
return object.__new__(cls)
_new_()
与_init_()
的区别
_new_
作用于_init_
之前。前者可以决定是否调用后者,或者说可以决定调用哪的init方法。
Python 中的_new_
方法负责创建一个实例对象,_init_
方法负责将该实例对象进行初始化
2.
__init__
是在类实例创建之后调用,而__new__
方法正是创建这个类实例的方法,__new__
产生的实例也就是__init__
里面的self__new__(cls[,...})
class 参数会原封不动地传给init