Как использовать кортежи в качестве параметров для __getitem __ ()? - PullRequest
0 голосов
/ 11 марта 2012

Я пишу пользовательский класс, который оборачивает диктат.Поэтому я хочу реализовать для него getitem .Я также буду использовать кортежи в качестве ключей в этой записи.Однако, когда я пытаюсь передать кортеж в getitem, Python выдает KeyError.Похоже, что он переводит мой кортеж в int, когда я передаю его getitem :

Код:

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!"

Выход:

type before call: <type 'tuple'>
type in call: <type 'int'>

## traceback stuff ##
KeyError: 0

Нужно ли Board наследовать от типа отображения, чтобы Python был счастлив?Кроме того, почему Python пытается сделать это в первую очередь?

1 Ответ

1 голос
/ 11 марта 2012

Ограничение повторяется, если не реализовано __contains__().Итак, реализуй это.

...