事实是,当Python遇到诸如的表达式时data["key"]["subkey"]
,内部将完成(data["key"])["subkey"]
。即,表达式的第一部分被解析:从对象“数据”中检索“键”项。然后,Python尝试调用__getitem__
该表达式的结果对象。如果这样的结果对象本身没有__getitem__
方法,则可能是您的错误。
那里有两种可能的解决方法:您应该使用“元组索引”(例如 data["key", "subkey"]
(然后__getitem__
以元组实例为键,然后在您的方法上进行测试))-或__getitem__
返回一个还具有__getitem__
方法的专用对象- 即使它所做的就是记录请求的密钥。