我做了以下事情
class dumb(object):
def __init__(self):
self.g = {}
def __getitem__(self,key): return self.g[key] if key in self.g else None
def __setitem__(self,key,val):
self.g[key] = val
te = dumb()
te[1]=2
te[1]
Out[4]: 2
1 in te
Run Code Online (Sandbox Code Playgroud)
它挂起..
所以如果我想搜索这样的东西,我该怎么做?请不要告诉我子类class dictionary.
提前致谢!
这里可能有相关问题: __contains__做了什么,可以调用__contains__函数
为了in
正常工作,你需要重写__contains__()
:
class dumb(object):
...
def __contains__(self, key):
return key in self.g
Run Code Online (Sandbox Code Playgroud)
顺便说说,
self.g[key] if key in self.g else None
Run Code Online (Sandbox Code Playgroud)
可以更简洁地写成
self.g.get(key)
Run Code Online (Sandbox Code Playgroud)