我有一个基类bc
和一些基于bc
.
class bc(Object):
def get_subclass_name(self):
# Retrieve the name of the most derived subclass of this instance
pass
def somemethod(self):
x = self.get_subclass_name()
class sc1(bc):
pass
class sc2(bc)
pass
这个想法是,当somemethod()
在 的子类的实例上调用时bc
,它将能够使用该实例的最派生子类的名称,而无需事先知道可能存在哪些潜在子类。
为此,我整理了一个测试用例:
class base_class(object):
@classmethod
def get_subclass_name(cls):
return cls.__name__
def somemethod(self):
print(base_class.get_subclass_name())
class sub_class(base_class):
pass
sub_class().somemethod()
运行此代码时,它会生成base_class
而不是sub_class
.