如何使用元组作为__getitem __()的参数?

时间:2012-03-11 06:16:27

标签: python duck-typing

我正在写一个包装词典的自定义类。因此,我想为它实现 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首先尝试执行此操作?

1 个答案:

答案 0 :(得分:1)

除非实施__contains__(),否则

包含迭代。所以,实现它。