【发布时间】:2017-11-01 19:16:53
【问题描述】:
有没有办法在不显式使用类名的情况下访问类变量,以防我以后决定更改类名?
类似的东西
static_variable = 'stuff'
className = CLASS
def method (self):
className.static_variable
这可以通过简单的方式实现吗?
回答
self.static_variable 或 __class__.static_variable
【问题讨论】:
-
你不只是在做
self.TABLE的任何特殊原因? -
或者
__class__.TABLE,如果你仍然要依赖神奇的__class__闭包变量? -
作为一个重击规则:在你的类中,你不需要知道类的名称(一个例外:
super在 python-2.x 中,可能在__repr__或 @ 987654327@)。每当您发现需要班级名称时,可能会有更好/更简单的方法。 -
@Rethipher:暂时忽略这些东西应该是类变量还是实例变量,你不知道你可以通过
self读取类变量吗? -
@Rethipher 你什么时候需要区分?
self.foo首先在实例中检查名为foo的属性,如果没有,则开始按照 MRO 顺序查找foo作为基类的类属性。具有相同名称的实例变量和类变量将是糟糕的设计。
标签: python class static-methods static-variables class-names