Экземпляр bar_for_foo_mixin
, хранящийся в вашей переменной класса oldfoo.var
, является совершенно отдельным экземпляром от объекта myfoo
, который вы создали в основной программе, поэтому их переменная экземпляра z
не будет общей.
Если вы хотите, чтобы переменная была общей для всех экземпляров класса, вы должны вместо этого сделать ее переменной класса и создать методы, предназначенные для обновления переменных класса, такие как bar_for_foo_mixin.bar
, вместо этого метод класса:
class bar_for_foo_mixin():
z = 0
@classmethod
def bar(cls, q):
x = 2
y = 8
cls.z = x + y + q
class oldfoo():
def __init__(self):
pass
var = bar_for_foo_mixin()
var.bar(10)
class myfoo(bar_for_foo_mixin):
def __init__(self):
super(myfoo, self).__init__()
def hello(self):
print("hello", self.z)
final = myfoo()
final.hello()
Это выводит:
hello 20