python的魔法方法

__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)

 

發佈了11 篇原創文章 · 獲贊 6 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章