• <del id="a8uas"></del>
    • 千鋒教育-做有情懷、有良心、有品質的職業教育機構

      400-811-9990
      手機站
      千鋒教育

      千鋒學習站 | 隨時隨地免費學

      千鋒教育

      掃一掃進入千鋒手機站

      領取全套視頻
      千鋒教育

      關注千鋒學習站小程序
      隨時隨地免費學習課程

      上海
      • 北京
      • 鄭州
      • 武漢
      • 成都
      • 西安
      • 沈陽
      • 廣州
      • 南京
      • 深圳
      • 大連
      • 青島
      • 杭州
      • 重慶
      當前位置:合肥千鋒IT培訓  >  技術干貨  >  python__new__()和__init__()有什么區別?

      python__new__()和__init__()有什么區別?

      來源:千鋒教育
      發布人:xqq
      時間: 2023-11-06 20:19:13

      python中,__new__()不是一定要有,只有繼承自object的類才有,該方法可以return父類(通過super(當前類名,cls).__new__())出來的實例,或者直接是object的__new__出來的實例。值得注意的是,在定義子類時沒有重新定義__new__()時,Python默認調用該類父類的__new__()方法來構造該類實例,如果該類父類也沒有重寫__new__(),那么將一直追溯至object的__new__()方法,因為object是所有新式類的基類。如果子類中重寫了__new__()方法,那么可以自由選擇任意一個其他的新式類。

      可見,當類中同時出現__new__()和__init__()時,先調用__new__(),再調用__init__(),具體的執行過程為:

      1.調用實例對象代碼xiaoming=Student('xiaoming',175);

      2.傳入name和height的參數,執行Student類的__new__()方法,該方法返回一個類的實例,通常會用父類super(Student,cls).__new__(cls),__new__()產生的實例即__init__()的self;

      3.用實例來調用__init__()方法,進行初始化實例對象的操作。

      可以看到,python中__new__()與__init__()的區別,

      1.首先用法不同,__new__()用于創建實例,所以該方法是在實例創建之前被調用,它是類級別的方法,是個靜態方法;

      而__init__()用于初始化實例,所以該方法是在實例對象創建后被調用,它是實例級別的方法,用于設置對象屬性的一些初始值。

      由此可知,__new__()在__init__()之前被調用。如果__new__()創建的是當前類的實例,會自動調用__init__()函數,通過return調用的__new__()的參數cls來保證是當前類實例,如果是其他類的類名,那么創建返回的是其他類實例,就不會調用當前類的__init__()函數。

      2.其次傳入參數不同

      __new__()至少有一個參數cls,代表當前類,此參數在實例化時由Python解釋器自動識別;

      __init__()至少有一個參數self,就是這個__new__()返回的實例,__init__()在__new__()的基礎上完成一些初始化的操作。

      3.返回值不同

      __new__()必須有返回值,返回實例對象;

      __init__()不需要返回值。

      以上內容為大家介紹了Python培訓之__new__()和__init__()有什么區別?,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。

      聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。

      猜你喜歡LIKE

      pythonweb框架的整理

      2023-11-06

      python字符串有幾種常見方法

      2023-11-06

      python解釋器的多種使用

      2023-11-06

      最新文章NEW

      python在函數中傳遞實參

      2023-11-06

      python字符串如何簡單運算

      2023-11-06

      python海象運算符的使用

      2023-11-06

      相關推薦HOT

      更多>>

      快速通道 更多>>

      最新開班信息 更多>>

      網友熱搜 更多>>