首先,我是python和OOP的新手,所以我仍在学习事物的工作原理。
我正在尝试将websocket API帮助程序移植到新的websocket库,因为原始库有错误并且github存储库处于非活动状态。新的库(高速公路缠绕)是异步的,并通过回调工作,原始库将新的响应放入队列中以进行同步处理。这增加了我仍在学习的复杂程度。
当前,我已经创建/修改了3个模块。这些是:
我的问题是在userClass类中,以及它与其他类的交互。我希望能够在接收和处理消息时从Protocol类内部调用userClass方法,并从userClass调用Client方法来请求消息并订阅流。
第一次尝试,我创建了一个包含所有我想调用的方法的抽象类,并使用userClass实现了所有这些方法。 (我认为)这意味着我可以从父方法安全地调用子方法,但是如果不创建循环引用就无法从userClass调用Client方法,并且当我移动时它似乎很脆弱(换句话说,一切都坏了)东西到一个新的模块。
我第二次尝试使用聚合关系将Client作为userClass中的对象。在客户端和协议内部,我引用了userCode类而不是对象,但是在调用方法时,我然后丢失了对该对象的引用。
我还没有尝试对userClass继承Client并使用父类的“ dummy”方法来覆盖直接继承,因为似乎有很多代码重复。
此示例显示了我想要的功能
class Protocol(WebsocketClientProtocol)
def onOpen(self):
print("open")
connectionOpened()
def send(self, msg):
self.sendMessage(json.dumps(msg))
class Client(Protocol)
def subscribe(self, msg)
self.send("subscribe_" + msg)
class userClass(Client)
def connectionOpened(self):
subscribe("this_stream")
我应该遵循什么设计范式来获得这种行为?
预先感谢