【发布时间】:2013-10-13 23:49:30
【问题描述】:
我有多个具有共同功能的类,由于各种原因,它们的实现方式不同。我在相同的上下文中使用所有这些类,但直到运行时我才知道将使用哪一个。我想实例化不同的类,但使用相同的行代码来调用通用功能。
所以,我虽然使用继承(显然),现在我的代码看起来像这样:
class Base():
def common(self):
return "abstract"
class A(Base):
def common(self):
return "A"
class B(Base):
def common(self):
return "B"
我希望能够将任何派生类实例化为 Base(这样我就不必创建特殊情况并检查我添加的每个新类)并将其称为 common 方法并获得所需“A”或“B”结果。
【问题讨论】:
-
您发布的代码有效吗?为什么或为什么不?
-
用 Python 代替 Java!不要检查类型并完全取消您的基类。
-
简而言之:duck-typing 使接口准过时。更长的答案:PEP-3119 和 abstract base classes。
标签: python inheritance interface