spl*_*ell 8 python class static-members
问题很简单,我试图使缩进适合于可读性.我刚刚开始使用Python,这就是我现在所拥有的:
class BaseKlass():
....
class DerivedKlass1(BaseKlass):
display_name = "DerivedKlass1"
class DerivedKlass2(BaseKlass):
display_name = "DerivedKlass2"
Run Code Online (Sandbox Code Playgroud)
基本上所有派生类都有
具有类名硬编码的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):
....
Run Code Online (Sandbox Code Playgroud)
因此DerivedKlass1.display_name应返回"DerivedKlass1",DerivedKlass2.display_name应返回"DerivedKlass2".
我知道我错过了一些非常明显的东西,我期待很多RTFM评论,但不管我想要的是学习如何动态地将python类名称设置为类级别属性.如果你愿意,可以随意投票,但如果你也给我一个答案,我会感激不尽.
谢谢,
您可以使用访问对象的类名
obj.__class__.__name__
Run Code Online (Sandbox Code Playgroud)
一旦创建了实例,你就需要这样做.最直接的方式是
class MyClass:
def __init__(self):
self.display_name = self.__class__.__name__
Run Code Online (Sandbox Code Playgroud)
你也可以使用一个元类来自动设置它,但我不认为这是值得的麻烦,而且我不记得那些工作现在完全正确.
| 归档时间: |
|
| 查看次数: |
2032 次 |
| 最近记录: |