0

我有一个包含 , 方法(以及和)的类.def__getitem____setitem__行为keys类似于items字典,其中键是字符串。

但是,in运算符的行为与预期不同:

>>> myObject=MyClass()
>>> 'abc' in myObject.keys()
False
>>> 'abc' in myObject
ArgumentError: Python argument types in
    MyClass.__getitem__(MyClass, int)
did not match the C++ signature:
    __getitem__(MyClass {lvalue}, std::string)

当我使用密钥时,为什么 python 试图用 调用__getitem__intstr

4

1 回答 1

1

看起来

'abc' in myObject 

被评估为:

for i in myObject:
    if myObject[i] == 'abc':
        return true

哪里i是整数。

尝试实现__contains__(self, value)魔术方法。

于 2012-06-11T11:24:37.703 回答