Как установить переменную в зависимости от другой переменной для обновления при обновлении исходной переменной? - PullRequest
0 голосов
/ 01 июня 2019

В python, давайте запустим следующие строки кода:

x = 0
y = x
x += 1
print(y)
print(x)

Первая строка вывода явно отличается от второй, хотя мы установили x=y в строке 2. Любой, кто имел опыт программирования в целом, знал бы это.

Однако есть ли способ сделать x обновление как y?

Ответы [ 2 ]

1 голос
/ 01 июня 2019

Чтобы развернуть комментарий @ juanpa, вы можете получить такое поведение, если поместите значение в список:

x = [0]
y = x
x[0] += 1
print(y[0])
print(x[0])
1 голос
/ 01 июня 2019

Я использую шаблон проектирования наблюдателя :

#!/usr/bin/env python
# -*-coding: utf-8 -*-


class X:
    def __init__(self, subject):
        self.subject = subject
        self.subject.register(self)
        self.update()

    def update(self):
        self.data = self.subject.data


class Y:
    def __init__(self, data=10):
        self.data = data
        self._observers = list()

    def set(self, value):
        self.data = value
        self.notify()

    def register(self, observer):
        self._observers.append(observer)

    def notify(self):
        for ob in self._observers:
            ob.update()


y = Y(1)
x = X(y)
assert x.data == 1 and y.data == 1

y.set(20)
assert x.data == 20 and y.data == 20

y.set(-1)
assert x.data == -1 and y.data == -1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...