我有一个包含静态字典的类:
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。
最佳答案
所以,这就是我最终所做的:
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)
关于支持项目分配的类中的Python静态字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15800770/