这个问题很简单,我试图让缩进符合可读性。我刚刚开始使用Python,这就是我现在所拥有的:
class BaseKlass():
....
class DerivedKlass1(BaseKlass):
display_name = "DerivedKlass1"
class DerivedKlass2(BaseKlass):
display_name = "DerivedKlass2"
基本上所有派生类都有
带有类名硬编码的display_name变量。
我想要的是在BaseKlass中设置display_name并从子类中删除display_name声明,如下所示:
class BaseKlass():
display_name = <some way to set the display name to callee class name>
class DerivedKlass1(BaseKlass):
....
class DerivedKlass2(BaseKlass):
....
因此DerivedKlass1.display_name应返回“DerivedKlass1”,DerivedKlass2.display_name应返回“DerivedKlass2”。
我知道我遗漏了一些非常明显的东西,我期待很多RTFM评论,但无论我想要的是学习如何动态地将python类名称设置为类级别属性。如果你愿意的话,可以随意对这个帖子投票,但如果你也给我一个答案,我会很感激。
谢谢,
答案 0 :(得分:6)
您可以使用
访问对象的类名obj.__class__.__name__
创建实例后,您需要这样做。最直接的方式是
class MyClass:
def __init__(self):
self.display_name = self.__class__.__name__
您也可以使用元类自动设置它,但我不认为它值得这么麻烦,而且我不记得那些工作现在是什么。