2

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

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)

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

4

1 回答 1

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)
于 2013-04-04T17:19:25.007 回答