__doc__魔法方法
內置函數可以通過
print(內置函數().__doc__)
對函數的文檔進行打印輸出
'''
__doc__ 推薦使用"""""" 打印我們類的註釋文檔
'''
class Demo(object):
"""
我是demo的註釋
"""
def __init__(self):
pass
d = Demo()
print(d.__doc__)
__del__魔法方法
釋放內存;該方法只有等全部對象都釋放完畢才考慮釋放內存的事情,無論是自動調用還是del方法主動調用,關鍵都在於“”[對象全部釋放]
class Demo:
def __del__(self):
print("好慘,我被回收了")
d = Demo()
d1 = d
del d
print("-"*20)
# del d1
print("-"*20)
__call__魔法方法
使一個實例變成可調用的對象
class Demo(object):
def __call__(self, *args, **kwargs):
print("我可以調用了喲")
d = Demo()
d() # 'Demo' object is not callable
__dict__魔法方法
以字典的形式查看類或者對象的成員,可以說是__dir__的一個子集
lass Demo(object):
gender = "female"
def __init__(self):
self.name = "amy"
self.__age = 18
def test(self):
print("test")
d = Demo()
d.test()
print(d.__dict__) # dict 查看對象中的實例屬性
print(Demo.__dict__) # 查看類中的成員-->類屬性與行爲
print(d.__dir__()) # 列表 查看對象的-->成員
print(Demo.__dir__(d))
# print(d._Demo__age)#私有屬性的成功訪問
__new__魔法方法
在類準備自身實例化時調用;靜態方法 創建對象;(@classmethod)
__new__和__init__的不同:
1.前者是靜態方法,後者是實例方法
2.前者是創建對象的方法,後者是創建對象之後自動調用的方法
class Demo(object):
def __init__(self):
print("__init__") #2
def __new__(cls, *args, **kwargs):
print("__new__") #1
return super().__new__(cls)