class Test(object):
def __init__(self, store):
assert isinstance(store, dict)
self.store = store
def __getitem__(self, key):
return self.store[key]
我尝试迭代这个类。在这个文档中说,实现__getitem__就足以迭代我的Test类。事实上,当我尝试迭代它时,它没有告诉我不能,但是我得到了一个KeyError:
In [10]: a = Test({1:1,2:2})
In [11]: for i in a: print i
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-11-8c9c9a8afa41> in <module>()
----> 1 for i in a: print i
<ipython-input-9-17212ae08f42> in __getitem__(self, key)
4 self.store = store
5 def __getitem__(self, key):
----> 6 return self.store[key]
7
KeyError: 0
- 你知道这个 0 从哪里来的吗? (底层发生了什么)
我知道我可以通过添加一个 __iter__ 函数来解决它:
def __iter__(self):
return dict.__iter__(self.store)
- 这是解决问题的最佳方式吗?(我可能还会继承自字典类)。
dict
值吗? - vishes_shell