python的魔術(shù)方法(一)__init__與__new__

魔法方法: 是類里面的一些特殊方法,用__形式,像__init__,它可以在特定的時機自動觸發(fā),通過魔術(shù)方法,我們可以定義類自己想要的行為

# python魔術(shù)方法:

"""

__init__: 初始化魔術(shù)方法,最常見的方法

作用:給對象添加所屬成員

觸發(fā):實例化對象之后觸發(fā)(實例對象創(chuàng)建完成后,會把對象傳到__init__方法里面)

self含義:就是指對象本身(可以打印self與對象查看,內(nèi)存地址是一致的)

"""

class Man:

? ? def __init__(self,name,age):

? ? ? ? print(self)? # 打印查看self含義

? ? ? ? print("執(zhí)行初始化方法")

? ? ? ? self.sex = "男"

? ? ? ? self.age = age

? ? ? ? self.name = name

? ? def sleep(self):

? ? ? ? print("睡覺")

one = Man("pp")

print(one)

print(one.__dict__)

"""

__new__: 創(chuàng)建對象的魔術(shù)方法

作用:管理和控制對象的生成

觸發(fā):實例化對象時觸發(fā)

cls含義:就是指當前類對象(在__new__里面表示要創(chuàng)造哪個類的實例對象),返回類對象的實例對象就是self,注意與self區(qū)別

"""

class Manty:

? ? def __new__(cls,sex):

? ? ? ? print(cls)

? ? ? ? print("執(zhí)行創(chuàng)建對象方法")

? ? ? ? if sex == ("男",):

? ? ? ? ? ? print(222)

? ? ? ? ? ? return object.__new__(cls)

? ? ? ? if sex == "女":

? ? ? ? ? ? print(111)

? ? ? ? ? ? pass

? ? def sleep(self):

? ? ? ? print("睡覺")

one = Manty("男")

print(one)

print(one.__dict__)

"""

兩則的區(qū)別:

1.

__new__是在實例創(chuàng)建之前被調(diào)用的,因為它的任務就是創(chuàng)建實例然后返回該實例對象,是個靜態(tài)方法。

__init__是當實例對象創(chuàng)建完成后被調(diào)用的,然后設置對象屬性的一些初始值,通常用在初始化一個類實例的時候。是一個實例方法。

"""

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 在 Python 中,我們可以經(jīng)??吹揭噪p下劃線 __ 包裹起來的方法,比如最常見的 __init__,這些方法被...
    minhelloworld閱讀 175評論 0 0
  • 寫這個的初衷主要是因為網(wǎng)上充斥的大量的假冒偽劣解釋說明 好歹自己試一試再寫文章啊! 真的是誤人子弟 例如: __ ...
    Tokiea閱讀 1,105評論 0 1
  • Python之內(nèi)置的魔術(shù)方法 __call__方法在調(diào)用對象時(實例化的對象加括號),會自動觸發(fā)類中的__call...
    免跪姓黃閱讀 241評論 0 2
  • python 魔術(shù)方法 前言 在做python開發(fā)的過程中,我們大家都會遇到在class(類)中使用雙下劃線的方法...
    shu_ke閱讀 525評論 1 2
  • 在python中,有一些內(nèi)置好的特定方法,方法名是“__xxx__",在進行特定的操作時會自動被調(diào)用,這些方法稱之...
    Margolu閱讀 349評論 0 0

友情鏈接更多精彩內(nèi)容