简体   繁体   English

在python中静态获取派生类名称

[英]Getting derived class name statically in python

How can i implement the static method get_class_name() to get the expected results. 我如何实现静态方法get_class_name()以获得预期的结果。

I need to get the correct class name without instantiating. 我需要获得正确的类名而不实例化。 (I know this can be done with an instance). (我知道这可以通过一个实例来完成)。 Python version is 2.6. 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'

Make it a classmethod instead: 使其改为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

Of course you don't need a function/method to do this and could just access the __name__ class attribute directly: 当然,您不需要功能/方法即可执行此操作,而可以直接访问__name__类属性:

print sub_classA.__name__ # -> sub_classA
# etc

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM