0

这是我的代码不起作用

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 我可以在这个类的任何地方访问的静态成员吗​​?

4

1 回答 1

2

python中没有静态成员之类的东西。你定义的是一个类成员。该成员存储在类对象上,正如您已经展示的那样,它以MyClass.special_items.

看来您要做的是初始化special_items. 为此,classmethod更合适(没有用 for self):

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

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

于 2013-03-13T18:38:47.463 回答