Итак, у меня есть основной класс и несколько вспомогательных классов. В методах основного класса мне понадобятся некоторые вспомогательные объекты, с которыми я хочу «поделиться» атрибутом shared_data
основного экземпляра, чтобы при каждом изменении атрибута shared_data
основного объекта соответствующие вспомогательные объектыатрибуты тоже обновятся соответственно. (Для конкретности вы можете думать о shared_data
как о «времени», и я хочу, чтобы атрибут «время» оставался синхронизированным между различными объектами).
Однако, кажется, что делать это наивноспособ, описанный ниже, не будет работать, потому что это на самом деле не будет «обмениваться» данными между объектами, а просто назначит текущее значение этим объектам, чтобы эти атрибуты объекта не оставались синхронизированными. Каким должен быть правильный способ реализации этой функции «синхронизации» или «совместного использования»?
class Main:
def __init__(self, shared_data):
self.shared_data = shared_data
pass
def do_stuff(self):
# initialise auxiliary objects (only for once).
# hopefully when self.x1 is changed, the data in
# the objects aux1, aux2 will also reflect this change
aux1, aux2 = Aux1(self.shared_data), Aux2(self.shared_data)
# however, in general, changing self.shared_data would not
# change the data in aux1 or aux2
another_value = ...
self.shared_data = another_value # doesn't work
pass
class Aux1:
def __init__(self, x1):
self.x1 = x1
...
pass
class Aux2:
def __init__(self, x2):
self.x2 = x2
...
pass