请教各位前辈:
MainEngine中add_engine()代码如下:
def add_engine(self, engine_class: Any) -> "BaseEngine":
engine: BaseEngine = engine_class(self, self.event_engine)
self.engines[engine.engine_name] = engine
return engine
使用传入的引擎类参数engine_class实例化引擎时,engine_class(self, self.event_engine)的参数怎么理解?
以添加CtaBacktesterApp为例
1、运行MainEngine.add_app(CtaBacktesterApp)
2、在add_app函数中,engine: BaseEngine = self.add_engine(app.engine_class)实际上是add_engine(CtaBacktesterApp.engine_class),CtaBacktesterApp.engine_class是BacktesterEngine
但是BacktesterEngine的初始化传参是:
def __init__(self, main_engine: MainEngine, event_engine: EventEngine) -> None:
""""""
super().__init__(main_engine, event_engine, APP_NAME)
self.classes: dict = {}
self.backtesting_engine: BacktestingEngine = None
self.thread: Thread = None
self.datafeed: BaseDatafeed = get_datafeed()
self.database: BaseDatabase = get_database()
self.result_df: DataFrame = None
self.result_statistics: dict = None
self.result_values: list = None
和engine_class(self, self.event_engine)不一致,不过代码能够正常运行。
请各位前辈解答一下两者不一致但还能运行的原理。谢谢啦!