Python 在不知道正确的派生类的情况下创建派生类的实例
我有一个基本类的事件。有多个派生类,例如: NetworkEvent、IOEvent等。 每个事件都有一个表示特定事件类型的值,因此可能:Python 在不知道正确的派生类的情况下创建派生类的实例,python,oop,Python,Oop,我有一个基本类的事件。有多个派生类,例如: NetworkEvent、IOEvent等。 每个事件都有一个表示特定事件类型的值,因此可能: 11 -> NetworkEvent (TCP send) 12 -> NetworkEvent (TCP receive) 14 -> IOEvent (File Open) 给定一个包含类型和连接到该类型的其他参数的事件,我想返回相应类的实例 例如: {"type": 11, "member1":"192.168.1.1",
11 -> NetworkEvent (TCP send)
12 -> NetworkEvent (TCP receive)
14 -> IOEvent (File Open)
给定一个包含类型和连接到该类型的其他参数的事件,我想返回相应类的实例
例如:
{"type": 11, "member1":"192.168.1.1", "member2":80}
将返回IP地址为192.168.1.1:80的NetworkEvent实例
{"type": 14, "member1":"C:\temp\file.txt", "member2":"DOMAIN\user"}
将返回文件“C:\temp\file.txt”的IOEvent,其中包含用户域\用户(根据类型id解析)
在python中这样做的正确方法是什么?
我假设理解类型(11、12等)的逻辑应该在事件类中,对吗
我没有尝试任何具体的方法,因为这主要是关于设计的正确性。我建议使用一个工厂函数,它接受字典作为参数-这可以检查给定字典的“type”值,然后构造并返回相应事件子类的实例。嘿,我认为这也是一种方法,但是我看到一些评论说基类不应该知道派生类。也许这是我们可以稍微“打破规则”的例子之一。我考虑将factory类作为@classmethod-->使用,这合理吗?factory函数不一定必须是基类的成员—它可以在自己的类中,也可以根本不在类中