Python の装飾システムが大好きです。@property
を呼び出すときにカスタム コードを実行できる点が気に入っていますaClassObect.attribute
。特に、属性を設定するときのデータの検証に。ただし、存在しない属性を設定しようとするときに、カスタム コードを実行する方法が必要ですが、見つけられません。たとえば、次のクラスがあるとします。
class C(object):
def __init__(self):
self._x = None
@property
def x(self):
"""I'm the 'x' property."""
return self._x
@x.setter
def x(self, value):
self._x = value
@x.deleter
def x(self):
del self._x
ここで、myObj
class のインスタンスである があり、C
を呼び出すとmyObject.x = 42
、データの検証に最適な適切なセッターが実行されます。しかし、これは誰かが を呼び出すのを止めるわけではなくmyOjbect.b = 47
、喜んで という新しい属性を作成しますb
。新しい属性を設定するときに特別なコードを実行する方法はありますか? 「エラー、この属性は存在しません」などのエラーを発生させる機能が必要です。