好的,我已经构建了自己的变量处理程序,其中有一个__getitem__
通过 data[key] 访问数据时使用的函数,它工作得很好,除了尝试访问项目链接时:
data["key"]["subkey"]
def __getitem__(self, key, **args):
print key
...
return self.dict[key]
当尝试访问不存在的子项时,Python 只是返回一个 KeyError 而不打印“子项”,为什么会这样以及如何让 Python 打印出我实际想要获取的内容?
我知道我可能误解了机制,但是有没有办法模拟字典并遵循所请求的数据字符串?
主要是这样我可以动态记录字典流中丢失的变量......
这显然是有效的(但这不是我喜欢的本机语法):
data["key:subkey"]
def __getitem__(self, key, **args):
for slice in key.split(':'):
print key
...
目标是模仿以下内容,
Works:
data = {'key' : {'subkey' : 1}}
print data["key"]["subkey"]
不起作用,但我想捕获其中的异常__getitem__
然后自动创建丢失的密钥或仅记录丢失的子密钥:
data = {'key' : {}}
print data["key"]["subkey"]
解决方案:
class Var():
def __init__(self):
self.dict = {'test' : {}}
def __getitem__(self, var, **args):
print ':',var
if var in self.dict:
v = Var(self.dict[var])
return v
print vHandle['test']['down']
Output:
: test
: down
None