是否可以动态地子类化?我知道有一个基类,但我不想影响类的所有实例。我希望对象cf变形为DrvCrystalfontz类的混合体。在层次结构中,gobject的一个子类需要在这个级别上可用以连接信号,下面的解决方案是不够的。在
class DrvCrystalfontz:
def __init__(self, model, visitor, obj=None, config=None):
if model not in Models.keys():
error("Unknown Crystalfontz model %s" % model)
return
self.model = Models[model]
if self.model.protocol == 1:
cf = Protocol1(self, visitor, obj, config)
elif self.model.protocol == 2:
cf = Protocol2(self, visitor, obj, config)
elif self.model.protocol == 3:
cf = Protocol3(self, visitor, obj, config)
for key in cf.__dict__.keys():
self.__dict__[key] = cf.__dict__[key]
我不确定我是否清楚您在这里想要的用途,但是可以动态地子类化。您可以使用
type
对象动态构造给定名称的类、基类的元组和方法/类属性的dict,例如:MySub现在是
DrvCrystalfontz
和some_other_class
的子类,继承了它们的方法,并添加了一个新方法(“some_extra_method
”)。在相关问题 更多 >
编程相关推荐