Python中有泛型继承吗?

2 投票
2 回答
3221 浏览
提问于 2025-04-16 19:22

我在想,Python里有没有通用的继承?

举个例子,

Class A(object):
  def foo():

Class B(object):
  def foo():


Class C(<someParentClass>):
  def bar():

所以实际上,我想做的事情是这样的

  myClass1 = C()<A>
  myClass2 = C()<B>

我猜这在Python里是不可能的,但有没有其他方法可以达到类似的效果呢?

2 个回答

2

你可以从 object 这个基础上来创建 C,然后使用它。

class MyClass1(A, C):
    pass
class MyClass2(B, C):
    pass

有很多方法可以实现你所描述的效果,但我觉得把 C 定义为一个混入类是最符合常规的做法。

10

在Python中,没有什么能阻止你这么做。Python里的所有东西基本上都是通用的。所有的东西都是在运行时处理的,包括类的声明,所以你可以像这样做:

def make_C(parent):
    class C(parent):
        def bar(self):
            ...
    return C

myClass1 = make_C(A)
myClass2 = make_C(B)

如果你想让C类的名字或文档更具描述性,你可以给它赋值__name____doc__这两个属性,或者用type()的三参数形式来创建它,而不是用class语句。

撰写回答