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

首頁 > 編程 > Python > 正文

python中__new__和__init__

2019-11-08 18:35:17
字體:
來源:轉載
供稿:網友
注:這是我的學習筆記,大部分內容來源一些博客。參考1:http://www.cnblogs.com/tuzkee/p/3540293.html概要:(1)__new__(cls, *args, **kwargs)在__init__(self, *args, **kwargs)之前,__new__必須返回構造的對象,至少有參數cls,參數的實例化由解釋器提供,返回的對象即__init__的self,__init__可以沒有返回值(2)__new__沒有返回值,__init__是不會被調用的參考2:http://www.cnblogs.com/ifantastic/p/3175735.html(1): 可以這么理解,在 Python 中存在于類里面的構造方法 __init__() 負責將類的實例化,而在 __init__() 啟動之前,__new__() 決定是否要使用該 __init__() 方法,因為__new__() 可以調用其他類的構造方法或者直接返回別的對象來作為本類的實例。(2): 如果將類比喻為工廠,那么__init__()方法則是該工廠的生產工人,__init__()方法接受的初始化參數則是生產所需原料,__init__()方法會按照方法中的語句負責將原料加工成實例以供工廠出貨。而__new__()則是生產部經理,__new__()方法可以決定是否將原料提供給該生產部工人,同時它還決定著出貨產品是否為該生產部的產品,因為這名經理可以借該工廠的名義向客戶出售完全不是該工廠的產品(3): 第一個參數cls表示當前實例。(4):# 在任何新式類的__new__()方法,不能調用自身的__new__()來制造實例,因為這會造成死循環。因此必須避免類似以下的寫法:# 在Foo中避免:return Foo.__new__(cls, *args, **kwargs)或return cls.__new__(cls, *args, **kwargs)。Child同理。class Foo(object):    def __init__(self, *args, **kwargs):        ...    def __new__(cls, *args, **kwargs):        return object.__new__(Stranger, *args, **kwargs) class Stranger(object):    ...foo = Foo()PRint(type(foo))    # 打印的結果顯示foo其實是Stranger類的實例。# 因此可以這么描述__new__()和__ini__()的區別,在新式類中__new__()才是真正的實例化方法,為類提供外殼制造出實例框架,然后調用該框架內的構造方法__init__()使其豐滿。# 如果以建房子做比喻,__new__()方法負責開發地皮,打下地基,并將原料存放在工地。而__init__()方法負責從工地取材料建造出地皮開發招標書中規定的大樓,__init__()負責大樓的細節設計,建造,裝修使其可交付給客戶。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湘阴县| 桂林市| 新沂市| 三明市| 崇文区| 新建县| 射洪县| 界首市| 嫩江县| 青海省| 汶上县| 平利县| 华容县| 乌鲁木齐市| 靖安县| 静宁县| 青阳县| 恩施市| 萨嘎县| 伊通| 石河子市| 酉阳| 大荔县| 临夏市| 平乡县| 科技| 晴隆县| 丹江口市| 鹤岗市| 叶城县| 咸宁市| 体育| 鄄城县| 晴隆县| 共和县| 平乡县| 九寨沟县| 托克托县| 上林县| 铁岭县| 阿拉善左旗|