我在设计某些类时遇到了麻烦。我希望我的用户能够通过传入字符类型的参数(例如,战士/向导)来使用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类的所有属性/方法。
我有很多类,所以我想避免为每个类编写单独的类,我希望为用户(字符)提供一个入口点。
问题:这可以做到吗?还是这是一种愚蠢的方式?
答案 0 :(得分:2)
您可以利用checker
函数鲜为人知的功能:
type
def Character(char_class):
return type("Character", (char_class,), {})
可用于动态创建类。第一个参数是类名,第二个是要继承的类,第三个是初始属性。