Если я правильно понял ваш вопрос, вы пытаетесь изменить переменную, определенную в одном классе в другом классе. В вашем текущем случае, когда вы используете ключевое слово self
, вы ссылаетесь на конкретный экземпляр этого класса. Единственный способ изменить это конкретное значение - создать экземпляр этого класса внутри другого класса и изменить его там.
В качестве примера я, вероятно, сделал бы что-то вроде
class Bar:
def __init__(self):
self.value_b = Foo()
def value_update(self):
self.value_b.a=new_value
В противном случае, я бы, вероятно, избавился бы от ключевого слова self
и сделал бы следующее:
class Foo:
value_a=None
def __init__(self):
paste some code here...
class Bar:
def __init__(self):
self.value_b = Foo.a # just copies the value, not reference!
def value_update(self):
self.value_b=new_value # this will NOT change Foo.a
Foo.a=new_value #this will change it
PS. В вашем случае я бы сказал, что второй метод более предпочтителен
Редактировать : Я думаю, что я ошибался, поскольку он просто копирует значение из Foo
, а не ссылается на него. Тогда, я полагаю, вам, возможно, придется вручную изменять значение Foo.a
каждый раз, когда вам нужно