我正在写一个包装词典的自定义类。因此,我想为它实现 getitem 。我也将在这个词典中使用元组作为键。但是,当我尝试将元组传递给getitem时,Python会抛出一个KeyError。当我将它传递给 getitem 时,它似乎将我的元组转换为int:
代码:
Class Board(object):
def __getitem__(self, key):
print "type in call: " + type(key)
return self.board[key]
# in main somewhere
board = Board()
print "type before call: " + type((1, 2))
if (1, 2) in board:
print "It's there!"
Ouptut:
type before call: <type 'tuple'>
type in call: <type 'int'>
## traceback stuff ##
KeyError: 0
Board是否需要继承Python的映射类型才能满意?另外,为什么Python首先尝试执行此操作?
答案 0 :(得分:1)
__contains__()
,否则包含迭代。所以,实现它。