В классе B ниже я хотел, чтобы функция __set__
в классе A вызывалась всякий раз, когда вы присваиваете значение B().a
. Вместо этого установка значения B().a
заменяет значение B().a
на значение. Присвоение класса C C().a
работает правильно, но я хотел иметь отдельный экземпляр A для каждого пользовательского класса, т. Е. Я не хочу менять «a» в одном экземпляре C (), чтобы изменить «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"