说我有这个文件结构:
main.py 包含一个名为引擎的类,以及一个名为 midi_out
的方法base_widg.py 包含一个名为 BaseWidg
的类gui.py 是我在测试整个程序时运行的文件,并在 main中实现了 Engine 类的实例。 py 和 base_widg.py
中的 BaseWidg 类的实例BaseWidg 中有一个方法需要在引擎
的已实现实例中调用 midi_out 函数在引擎的 init 功能中
self.midiout = rtmidi.MidiOut()
这很重要,因为许多其他方法需要此声明,包括 midi_out ,因为:
def midi_out(self, note, vel, state):
# figure out what channel is (irrelevant)
self.midiout.send_message([channel, note, vel)
不幸的是,这往往意味着我不能使用@staticmethod ......
最狡猾和最有效的方法是什么?我是否需要更改程序的结构?
可能不相关:我使用的是python 2.7,pygtk 2和python_rtmidi。
答案 0 :(得分:1)
一种选择是让 BaseWidg 的构造函数获取引擎的实例并将其存储为实例变量。然后,您只需在 BaseWidg 中调用引擎实例的midi_out()
方法。