面向對象高階-04實現中括號方法的魔法方法及原理

實現點方法的魔法方法:

  • getitem
  • setitem
  • delitem


__getitem__

* 當你用中括號去獲取屬性時 執行python

f1['age']

getitem執行 18code

f1['name'] = 'nash'

setitem執行get


_\setitem__

  • 當你用中括號去設置屬性時 執行
f1['age'] = 18
f1['age1'] = 19

輸出結果 ---> 對應 __setitem__ 方法代碼塊裏面運行的結果
須要注意點:
f1['name'] = 'nash' 這樣的結構的賦值並不會觸發,只有在獲取屬性意義上纔會觸發getitem,而不是單純的格式!!!it


_\delitem__

  • 當你用中括號去刪除屬性時 執行
del f1['nash']
# del obj[key]時,delitem執行


多個魔法方法結合例子:

列子:class

class A:
    def __getitem__(self, item):
        print("__getitem__")
        return self.__dict__[item]

    def __setitem__(self, key, value):
        print("__setitem__")
        self.__dict__[key] = value

    def __delitem__(self, key):
        del self.__dict__[key]
        print("__delitem__")


a = A()
# a.name = "jack"
a["name"] = "jack"
print(a["name"])
del a["name"]
print(a["name"])
相關文章
相關標籤/搜索