如何实现静态方法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'
答案 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