python继承:使用参数选择父类

时间:2019-07-17 08:33:21

标签: python oop

我在设计某些类时遇到了麻烦。我希望我的用户能够通过传入字符类型的参数(例如,战士/向导)来使用Character()类。

虚拟代码:

class CharClass():
    def __init__(self, level):
        self.level = level

class Fighter(CharClass):
    # fighter stuff
    pass

class Wizard(CharClass):
    # wizard stuff
    pass

class Character(): #?
    def __init__(self, char_class):
        # should inherit from Fighter/Wizard depending on the char_class arg
        pass

例如,在调用后: c = Character(char_class='Wizard') 我想让c继承Wizard类的所有属性/方法。 我有很多类,所以我想避免为每个类编写单独的类,我希望为用户(字符)提供一个入口点。

问题:这可以做到吗?还是这是一种愚蠢的方式?

1 个答案:

答案 0 :(得分:2)

您可以利用checker函数鲜为人知的功能:

type

def Character(char_class): return type("Character", (char_class,), {}) 可用于动态创建类。第一个参数是类名,第二个是要继承的类,第三个是初始属性。