Для произвольного объекта:
class Val(object):
def __init__(self):
this_val = 123
Я хочу создать абстрактный базовый класс с атрибутом Val()
:
class A(object):
foo = Val()
. Я ожидаю, что когдамои дети наследуют от этого класса, они получат копии Val()
.Например:
class B(A):
pass
class C(A):
pass
Я ожидал бы следующее поведение:
>>> b = B()
>>> c = C()
>>> c.foo.this_val = 456
>>> b.foo.this_val
123
Но вместо этого я получаю:
>>> b.this_val
456
Я понимаю, что мог бы просто self.foo = Val()
в init для достижения такого поведения, но у меня есть требование, чтобы foo оставался атрибутом (это менеджер моделей в django).Кто-нибудь может предложить обойти это?
РЕДАКТИРОВАТЬ: Мне действительно нужно иметь возможность получить доступ к значению в качестве атрибута класса, поэтому мое желаемое поведение:
>>> C.foo.this_val = 456
>>> B.foo.this_val
123