国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中new方法的詳解

2020-02-16 00:40:41
字體:
供稿:網(wǎng)友

new_ 方法是什么?

__new__方法其實(shí)就是創(chuàng)建對象的方法

new()方法是在類準(zhǔn)備將自身實(shí)例化時(shí)調(diào)用。

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

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

第一個參數(shù)cls是當(dāng)前正在實(shí)例化的類。

如果要得到當(dāng)前類的實(shí)例,應(yīng)當(dāng)在當(dāng)前類中的new()方法語句中調(diào)用當(dāng)前類的父類 的new()方法。

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

def new(cls, *args, **kwargs):…return object.new(cls)

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

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

如果new()返回其他類的實(shí)例,那么只會調(diào)用被返回的那個類的構(gòu)造方法。

class Foo(object):def init(self, *args, **kwargs):passdef new(cls, *args, **kwargs):return object.new(Stranger, *args, **kwargs)
class Stranger(object):pass
foo = Foo()print(type(foo))》》》》<class ‘main.Stranger'>

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

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

而init()方法負(fù)責(zé)從工地取材料建造出地皮開發(fā)招標(biāo)書中規(guī)定的大樓,init()負(fù)責(zé)大樓的細(xì)節(jié)設(shè)計(jì),建造,裝修使其可交付給客戶。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對武林站長站的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 司法| 江川县| 原平市| 汤阴县| 洛扎县| 博爱县| 广平县| 襄垣县| 云和县| 龙井市| 绥宁县| 崇州市| 平乐县| 雷山县| 志丹县| 钦州市| 阜城县| 桐梓县| 安庆市| 时尚| 阳山县| 延寿县| 平舆县| 轮台县| 临沭县| 谢通门县| 句容市| 虞城县| 城步| 安国市| 临城县| 北宁市| 淄博市| 封丘县| 逊克县| 健康| 连城县| 容城县| 陆丰市| 旅游| 博客|