如何更改基类

Anu*_*yal 3 python class dynamic

我有一个派生自基类的类,并且有许多行代码

例如

class AutoComplete(TextCtrl):
    .....
Run Code Online (Sandbox Code Playgroud)

我想要做的是更改基类,以便它的工作方式

class AutoComplete(PriceCtrl):
    .....
Run Code Online (Sandbox Code Playgroud)

我已经使用了两种类型的AutoCompletes,可能想添加更多的基类,那么我该如何动态地做呢?

组合将是一个解决方案,但我不想修改代码很多.

有什么简单的解决

ton*_*nfa 7

您可以为您的班级设立工厂:

def completefactory(baseclass):
    class AutoComplete(baseclass):
        pass
    return AutoComplete
Run Code Online (Sandbox Code Playgroud)

然后使用:

TextAutoComplete = completefactory(TextCtrl)
PriceAutoComplete = completefactory(PriceCtrl)
Run Code Online (Sandbox Code Playgroud)

另一方面,取决于你想要实现什么以及你的类看起来如何,也许AutoComplete是一个mixin,所以你要定义TextAutoComplete:

class TextAutocomplete(TextCtrl, AutoComplete):
    pass
Run Code Online (Sandbox Code Playgroud)