__set__
以下のクラスBでは、に値を割り当てるたびにクラスAの関数が呼び出されるようにしたかったのB().a
です。代わりに、値を設定して値をB().a
上書きB().a
します。クラスCの割り当てはC().a
正しく機能しますが、ユーザークラスごとにAの個別のインスタンスが必要でした。つまり、C()の1つのインスタンスで「a」を変更して他のすべてのインスタンスで「a」を変更したくないのです。問題を説明するために、いくつかのテストを作成しました。test1とtest2の両方に合格するクラスを定義するのを手伝ってもらえますか?
class A(object):
def __set__(self, instance, value):
print "__set__ called: ", value
class B(object):
def __init__(self):
self.a = A()
class C(object):
a = A()
def test1( class_in ):
o = class_in()
o.a = "test"
if isinstance(o.a, A):
print "pass"
else:
print "fail"
def test2( class_in ):
o1, o2 = class_in(), class_in()
if o1.a is o2.a:
print "fail"
else:
print "pass"