Possible Duplicate:
Python dynamic inheritance: How to choose base class upon instance creation?
我希望一个类根据init方法中的参数动态选择基类。在
Class A():
#...
Class B():
#...
Class C():
def __init__(self, base_type):
if parent_type == 'A':
#TODO: make C derive A
else:
#TODO: make C derive B
A和B是派生相同基类的库类。在
对a similar question的回答似乎太难看了。在
虽然您可以在
__init__
中更改类,但在__new__
中进行更改更为合适。前者用于初始化,后者用于施工:使用
__init__
,您将创建一个C实例,然后修改其类型。使用__new__
,您永远不会创建C的实例,只需要创建所需的base_type
。在我完全同意cyroxx,你应该给我们一些你的问题的背景。现在的情况是,
__init__
是在创建类的实例以初始化其成员之后调用的。太晚了,无法更改继承权。在一个简单的类工厂就足够了:
我建议阅读一下关于python中动态类创建的this SO answer。在
我想你指的是基类型而不是父类型。但下面的方法应该行得通
关于这种方法的更多细节可以在这里找到:http://harkablog.com/dynamic-state-machines.html
相关问题 更多 >
编程相关推荐