Pythonの組み込み型の特殊関数を上書きする方法はありますか?たとえば、組み込みのdictから継承するSpecialDictクラスを作成したいと思います。次のように、ユーザーが特別な辞書のキーと値の両方に対してカスタム検証関数を定義できるようにしたいです。
def __init__(self, keyValidator = True, valueValidator = True):
self.keyValidator = keyValidator
self.valueValidator = valueValidator
これを使用して、次のように、updateメソッドでの値の追加をインターセプトできます。
def update(self,key,value):
assert (self.keyValidator(key))
assert (self.valueValidator(key))
self[key] = value
しかし、誰かが先に進んで[]をアクセスとして使用することにした場合、これは機能しません。または、誰かが辞書リテラルを使用してオブジェクトを作成した場合。
mySpecialDict = SpecialDict
mySpecialDict['hello'] = 54