有沒有辦法在python中覆蓋內置類型的特殊功能?例如,我想創建一個從內置字典繼承的SpecialDict類。我希望允許用戶定義自定義的驗證功能,在我的特殊字典key和值,就像這樣:在Python中覆蓋特殊功能
def __init__(self, keyValidator = True, valueValidator = True):
self.keyValidator = keyValidator
self.valueValidator = valueValidator
利用這一點,我可以攔截在更新方法中添加值,就像這樣:
def update(self,key,value):
assert (self.keyValidator(key))
assert (self.valueValidator(key))
self[key] = value
但是,如果有人決定繼續使用[]作爲訪問權限,這將無法正常工作。或者如果有人使用字典文字創建對象。
mySpecialDict = SpecialDict
mySpecialDict['hello'] = 54
幾乎所有您看到標準對象支持的語法都可以通過Python手動實現。他們的網站上有關於此事的豐富文檔。 – slezica