为什么要在这个API设计模式中使用回调?

2024-06-29 00:54:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在使用一个API包,该API包是为特定站点上的algotrading而设计的,在我使用它的过程中,我发现使用的一些设计模式非常混乱,让我不禁要问他们为什么要这样做,下面是我正在使用的:

class IBapi(EWrapper, EClient):

    def openOrder(self, orderId, contract, order, orderState):
        super().openOrder(orderId, contract, order, orderState)
        print(order) 


app = IBapi()
app.connect('127.0.0.1', 7497, 123)
app.reqAllOpenOrders() #This triggers the above openOrder method as per their design pattern via a callback

我有一个类IBApi,它继承了父类EWrapper和EClient,因此我现在可以使用super()符号访问这两个类中的任何方法。如果我想访问,比如说我当前的未结订单,文档会说调用方法app.reqAllOpenOrders,然后触发回调,执行我在IBApi类中覆盖的openOrder方法,这意味着我可以点击该方法并获取数据

从逻辑上讲,这对我来说是有意义的,但我想问的是,为什么要使用这种设计模式?这有什么特别的原因吗?为什么他们没有一个更接近的方法,你可以调用,比如说,某个方法app.getOrders,它返回我需要的所有数据的列表,而不使用回调


Tags: 方法apiapp设计模式ordercontractsuperibapi