在python中静态获取派生类名



如何实现静态方法get_class_name()以获得预期结果

我需要在没有实例化的情况下获得正确的类名。(我知道这可以用实例来完成)。Python版本为2.6.

class base_class():
    @staticmethod
    def get_class_name():
        return <??>
class sub_classA(base_class):
    pass
class sub_classB(base_class):
    pass
print sub_classA.get_class_name() # should print 'sub_classA'
print sub_classB.get_class_name() # should print 'sub_classB'
print base_class.get_class_name() # should print 'base_class'

改成classmethod:

class base_class():
    @classmethod
    def get_class_name(cls):
        return cls.__name__
class sub_classA(base_class):
    pass
class sub_classB(base_class):
    pass
print sub_classA.get_class_name() # -> sub_classA
print sub_classB.get_class_name() # -> sub_classB
print base_class.get_class_name() # -> base_class

当然,你不需要一个函数/方法来做到这一点,可以直接访问__name__类属性:

print sub_classA.__name__ # -> sub_classA
# etc

最新更新