Python中有泛型继承吗?
我在想,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
语句。