engine.py Файл:Делиться значения между объектами в том же модуле Python
class Engine(object):
def __init__(self, variable):
self.variable = variable
class Event(object):
def process(self):
variable = '123' # this should be the value of engine.variable
Python
>>> from engine import Engine, Event
>>> engine = Engine('123')
>>> e = Event()
>>> e.process()
Какой самый лучший способ для достижения этой цели? Из-за ограничений с классом Event (это на самом деле подкласс сторонней библиотеки, в которую я вставляю новые функции) я не могу сделать что-то вроде e = Event(engine)
.
В глубине объяснения:
Почему я не использую e = Event(engine)
?
Потому что событие фактически является подклассом сторонней библиотеки. Кроме того, process()
является внутренним методом. Таким образом, класс на самом деле выглядит следующим образом:
class Event(third_party_library_Event):
def __init__(*args, **kwargs):
super(Event, self).__init__(*args, **kwargs)
def _process(*args, **kwargs):
variable = engine.variable
# more of my functionality here
super(Event, self)._process(*args, **kwargs)
Мой новый модуль также должен работать плавно с существующим кодом, который использует класс событий уже. Поэтому я не могу добавить передать объект движка каждому вызову _process() или в метод init.
Между определениями классов или всеми объектами внутри модуля? –
Между всеми объектами внутри модуля, отредактированным заголовком. – nathancahill
Вы пробовали 'globals() ['variable']'? Но это грязно, я думаю, что в вашей модели дизайна есть проблема. –