在Python

时间:2017-07-25 16:35:28

标签: python-2.7 oop inheritance

假设我有一个python 2.7代码,它维护一个选项列表。通过解析这些选项,代码可以确定接下来要实例化的复杂继承树的哪个子类。但是,不同的子类具有不同的构造函数,它们使用不同的参数编号。所以我发现自己编写了这样的代码:

childClassStr = get_child_class(currentOptionDict)
childClass = getattr(importlib.import_module("meow"), childClassStr)

# necessary parameters are all available at this point
if childClass == class1:
    classInstance = childClass(param3, param4)
elif childClass == class2:
    classInstance = childClass(param2, param3, param4)
else:
    classInstance = childClass(param1, param2, param3, param4)

我意识到这很可能不是解决这个问题的好方法。是否有可接受的实例化方式?我应该动态构建参数列表以避免if else语句并编写如下内容:

childClassStr = get_child_class(currentOptionDict)
childClass = getattr(importlib.import_module("meow"), childClassStr)
paramList = assemble_class_params(childClass)
classInstance = childClass(*paramList)

或者有更清洁的方法吗?每个子类都支持非常不同的功能;我将它们放在继承树中,以避免重复子类的子集之间共享的方法。

0 个答案:

没有答案
相关问题