【发布时间】:2012-08-19 10:01:57
【问题描述】:
可能重复:
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 的答案看起来太丑了。
【问题讨论】:
-
你为什么要做这样的事情?尽管在像 python 这样的动态语言中很多事情都是可能的,但这似乎不是一个好的方法。有了更多背景信息,我们或许能够更好地了解您的问题并提供解决方案。
-
你真的需要使用继承吗?您可以改用组合吗(例如,每个 C 实例都拥有 A 或 B 的实例)?查看您链接的问题的第二个高度评价的答案。
-
如果您坚持不使用工厂模式,您可能需要研究元类。 docs.python.org/py3k/reference/datamodel.html#metaclasses
-
@cyroxx 我刚刚添加了一个重要细节,即 A 和 B 是派生相同基类的库类。
-
类似的问题或多或少完全相同,并提供了您将在此处获得的所有答案...如果答案是“丑陋”,您的问题应该解决您认为丑陋的问题这些解决方案,而不仅仅是“给我同一个问题的新答案”。
标签: python inheritance