魔法方法: 是類里面的一些特殊方法,用__形式,像__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)用的,然后設置對象屬性的一些初始值,通常用在初始化一個類實例的時候。是一個實例方法。
"""