实例方法中的python静态变量

时间:2013-03-13 18:37:17

标签: python class variables static

这是我的代码无效

class MyClass:
    special_items = {}
    def preload_items(self):
        special_items['id'] = "properties"

NameError:未定义全局名称'special_items'

作品

class MyClass:
    special_items = {}
    def preload_items(self):
        MyClass.special_items['id'] = "properties"

special_items不是我可以在这个班级的任何地方访问的静态成员吗​​?

1 个答案:

答案 0 :(得分:2)

python中没有静态成员这样的东西。你定义的是一个班级成员。该成员存储在类对象中,如您所示,它被访问为MyClass.special_items

您尝试做的似乎是初始化special_items.为此,classmethod更合适(self没有用):

@classmethod
def preload_items(cls):
        cls.special_items['id'] = "properties"

请注意,您也可以将其作为self.special_items访问,但它仍然存储在类对象中,即该类的所有对象都访问相同的值。