日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python中new方法详解及_Python中new方法的详解

發布時間:2023/12/15 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中new方法详解及_Python中new方法的详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

new_ 方法是什么?

__new__方法其實就是創建對象的方法

new()方法是在類準備將自身實例化時調用。

一個類可以有多個位置參數和多個命名參數,而在實例化開始之后,在調用 init()方法之前,Python首先調用new()方法:

def new(cls, *args, **kwargs):

第一個參數cls是當前正在實例化的類。

如果要得到當前類的實例,應當在當前類中的new()方法語句中調用當前類的父類 的new()方法。

例如,如果當前類是直接繼承自object,那當前類的new()方法返回的對象應該為:

def new(cls, *args, **kwargs):

return object.new(cls)

通常來說,當前類開始實例化時,new()方法會返回cls(cls指代當前類)的實例,然后該類的init()方法作為構造方法會接收這個實例(即self)作為自己的第一個參數,然后依次傳入new ()方法中接收的位置參數和命名參數。

注意:如果new()沒有返回cls(即當前類)的實例,那么當前類的init()方法是不會被調用的。

如果new()返回其他類的實例,那么只會調用被返回的那個類的構造方法。

class Foo(object):

def init(self, *args, **kwargs):

pass

def new(cls, *args, **kwargs):

return object.new(Stranger, *args, **kwargs)

class Stranger(object):

pass

foo = Foo()

print(type(foo))

》》》》

因此可以這么描述new()和ini()的區別,在新式類中new()才是真正的實例化方法,為類提供外殼制造出實例框架,然后調用該框架內的構造方法init()使其豐滿。

如果以建房子做比喻,new()方法負責開發地皮,打下地基,并將原料存放在工地。

而init()方法負責從工地取材料建造出地皮開發招標書中規定的大樓,init()負責大樓的細節設計,建造,裝修使其可交付給客戶。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對我們的支持。如果你想了解更多相關內容請查看下面相關鏈接

本文標題: Python中new方法的詳解

本文地址: http://www.cppcns.com/jiaoben/python/249961.html

總結

以上是生活随笔為你收集整理的python中new方法详解及_Python中new方法的详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。