ファイル engine.py:
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
パイソン
>>> from engine import Engine, Event
>>> engine = Engine('123')
>>> e = Event()
>>> e.process()
これを達成するための最良の方法は何ですか? Event クラスの制限のため (実際には、新しい機能をスプライシングしているサードパーティ ライブラリのサブクラスです)、次のようなことはできませんe = Event(engine)
。
詳細な説明:
を使用していないのはなぜe = Event(engine)
ですか?
Event は実際にはサードパーティ ライブラリのサブクラスであるためです。また、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)
また、新しいモジュールは、既に Event クラスを使用している既存のコードとシームレスに実行する必要があります。そのため、エンジン オブジェクトを各 _process() 呼び出しまたはinitメソッドに渡すことはできません。