[Python3]__init__ 和 __new__ 方法的區別

在學習python面向對象的時候,經常會接觸__init__()方法,而__new__()方法則較少接觸,這裏記錄一下它們的作用及區別

[Python3]__init____new__ 的區別

  1. 首先__init__是一個實例方法,而__new__是一個靜態方法
  2. __init__()就像他的名字一樣,是用於初始化對象的,在對象已經生成之後被自動調用,因此有了我們經常用到的類似如下的語句
def __init__(self, arg):
	super().__init__(arg)
  1. __new__方法則是創建對象的方法,是一個靜態方法,至少要有一個參數cls:當前要生成的對象的類名,當我們用類名+()的形式來創建對象的時候,首先會自動調用__new__方法來創建對象,cls參數也自動給出,之後再使用__init__來初始化對象

(這一點上python就和C系列語言或是java不太一樣,個人認爲這個設計更加體現出了python的動態語言特性)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章