在python中静态获取派生类名

时间:2014-07-25 10:08:03

标签: 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'

1 个答案:

答案 0 :(得分:1)

改为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