如何从基类Base中获取派生类Derived的名称
从基类方法获取调用它的子类名称
你需要的实现方式很直接:在基类的方法里,通过self.__class__.__name__就能拿到调用该方法的子类名称。因为self指向的是子类的实例,self.__class__对应的就是子类的类对象。
修改后的可运行代码:
class Base(object): def print_derived(self): print(self.__class__.__name__) class Derived(Base): pass bar = Derived() bar.print_derived() # 输出结果: Derived
哪怕是多重继承的场景(比如你的子类同时继承了多个mixin),这个方法依然能正确返回实例所属的最具体子类的名称。
这样只需要修改Base这一个mixin类,所有继承它的单元测试子类调用该方法时,都会自动输出自身类名,完全不需要逐个修改子类代码,正好匹配你的需求。
内容的提问来源于stack exchange,提问作者alias51
相关产品推荐
相关产品推荐

