我想扩展一个模块中的类层次结构。在Python中扩展类层次结构
要扩展的模块看起来像这样。 模块FOO:
class bar(object): pass
class spam(bar): pass
class eggs(bar): pass
现在我想扩展这些类:使用
class my_bar(foo.bar):
def new_func(): pass
class my_spam(foo.spam): pass
class my_eggs(foo.eggs): pass
在my_bar这样做,一个新的功能new_func()不会在my_spam实例可
my_spam_instance.new_func()
什么是最好的(“最pythonic”)的方式来实现这一目标?我想到了多重继承,像这样:
class my_bar(foo.bar): pass
class my_spam(foo.bar, my_bar): pass
class my_eggs(foo.eggs, my_bar): pass
虽然我从来没有真正使用它,但我不确定这是最好的方法。
你写的东西应该可以工作,但是“钻石关系”(my_spam继承自foo.bar和my_bar,都是从bar继承的)会使事情变得难以理解。你可以让my_bar不从foo.bar(mixin)继承。你可以给你想要扩展的类提供一些背景吗? – syntonym
根据你在这里提供的细节,多重继承(MI)应该对你有用。 – thebjorn