类中的Python静态字典,支持项目分配

Joh*_*cés 2 python dictionary static-members python-2.7

我有一个包含静态字典的类:

class MyClass:
    my_dict = {}
    def __init__(self, name):
        self.name = name
        MyClass.my_dict[self.name] = []
    def __call__(self, data):
        MyClass.my_dict[self.name].append(data)
Run Code Online (Sandbox Code Playgroud)

每当我想要更新字典时,我都必须使用MyClass.my_dict[key],但我希望类本身能够支持项目分配,所以我可以MyClass[key]用来做同样的事情.有没有办法做到这一点?我正在使用Python 2.7.

Joh*_*cés 5

所以,这就是我最终做的事情:

class MyClassType(type):
    my_dict = {}
    def __getitem__(cls, key):
        return cls.my_dict[key]
    def __setitem__(cls, key, value):
        cls.my_dict[key] = value
    def __str__(cls):
        return cls.my_dict.__str__()
    def iteritems(cls):
        return cls.my_dict.iteritems()

class MyClass(object):
    __metaclass__ = MyClassType
    def __init__(self, name):
        self.name = name
        MyClass[self.name] = []
    def __call__(self, data):
        MyClass[self.name].append(data)
Run Code Online (Sandbox Code Playgroud)