Python: Как использовать данные, которые создают другие классы? - PullRequest
0 голосов
/ 31 марта 2020

Предположим, у меня есть класс:

class Foo:
def __init__(self):
    self.value_a = None

на модуле, а на другом модуле у меня есть другой класс:

class Bar:
def __init__(self):
    self.value_b = None

def value_update(self):
    self.value_b = some_operation

Поскольку python не имеет указателей, я не может указать self.value_a объекта в классе Foo на место в памяти объекта self.value_b в классе Bar. Итак, что я мог сделать в этом случае? Дело в том, что я хотел бы, например, чтобы класс Foo видел значения, которые создает класс Bar, и использовал их внутри своего собственного класса.

1 Ответ

0 голосов
/ 31 марта 2020

Если я правильно понял ваш вопрос, вы пытаетесь изменить переменную, определенную в одном классе в другом классе. В вашем текущем случае, когда вы используете ключевое слово 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 каждый раз, когда вам нужно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...