このPython 記述子を持っていると想像してください:
class MyDesc(object):
def __get__(self, instance, instance_type=None):
return 'Blue berries'
def __set__(self, instance, value):
print 'called with', instance, value
class MyClass(object):
desc = MyDesc()
インスタンス引数で__set__
呼び出される通常の実行方法はありますか? None
つまり、次のようなことをしなくても
MyClass.__dict__['desc'].__set__(None, 'ants bees cats')
これらはそれをしないようです:
MyClass.desc = 'blah'
setattr(MyClass, 'desc', 'blah')
私が質問する理由は、このシナリオを回避するために Django で防御的なコーディングが行われているのを見て、それが必要かどうか疑問に思っているからです。