Fork me on GitHub

Python_Basic_Distinguish

当一个类实例被创建时,__init__()方法会自动执行
目的为执行一些对象的必要的初始化工作

1
2
3
def __init__(self, name, symbol):
self.name = name
self.symbol = symbol

我们通过实现init()方法来初始化对象。当一个对象被创建,
Python首先创建一个空对象并为该新对象调用__init__()方法。
这个方法函数通常用来创建对象的实例变量并执行任何其他一次性处理。

注意

  1. __init__只能返回None对象,不能返回任何实例化返回值
  2. 在其他面向对象编程中通常使用 this

1
2
3
4
5
class MyClass(object):
def __new__(cls, *args, **kwargs):
...
# 实例化
myclass = MyClass(*args, **kwargs)

第一个参数cls是当前正在实例化的类。
如果要得到当前类的实例,应当在当前类中的new()方法语句中调用当前类的父类 的new()方法。

例如,如果当前类是直接继承自object,那当前类的new()方法返回的对象应该为:

1
2
3
def __new__(cls, *args, **kwargs):
...
return object.__new__(cls)


_new_()_init_()的区别

    1. _new_作用于_init_之前。前者可以决定是否调用后者,或者说可以决定调用哪的init方法。
      Python 中的 _new_ 方法负责创建一个实例对象,_init_ 方法负责将该实例对象进行初始化
  • 2.__init__是在类实例创建之后调用,而__new__方法正是创建这个类实例的方法,__new__产生的实例也就是__init__里面的self

    • __new__(cls[,...}) class 参数会原封不动地传给init
喜欢的可以对我打赏了哟~