python 中的__new__方法


1.有關__new__方法的介紹

__new__方法調用在構造方法構造實例之前,即在__init__方法執行之前,我們可以這樣理解,他的作用是決定是否適用這個__iint__方法來構造實例,但是需要注意,__new__只出現在新式類中,在經典類中沒有這個方法.本質上__new__是一個靜態方法.

2.有關__new__的使用

上面我們介紹__new__方法,下面我們來看一下他是如何使用的

class User(object):
    def __init__(self,name):
        self.name = name
        print("__init__方法被調用")

    @staticmethod
    def __new__(cls, *args, **kwargs):
        print("__new__方法被調用")
        return object.__new__(cls)

if __name__ == '__main__':
    u1 = User("name")

上面代碼的執行結果如下:

通過上面的結果我們可以知道,__new__方法執行在__init__方法之前

我們在來解釋下他的用法:

1)__new__方法必須有參數cls,cls指的是當前正在實例化的類

2)__new__必須有返回值,返回的是實例,如果是使用當前類構造的實例,可以用object.__new__(cls),也可以用父類名.__new__(cls)

3)__init__方法的參數self其實就是__new__方法返回的實例對象,在這個__init__方法中還可以對這個實例進行其他的操作,比如添加一些屬性等

注:實際上在新式類中我們不是必須要重寫這個__new__方法,python是默認調用這個類的直接父類的__new__方法來構造實例的

通常這個__new__方法用在單例模式的實現上

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM