dict をラップするカスタム クラスを作成しています。そのため、 getitemを実装したいと考えています。また、この dict ではタプルをキーとして使用します。しかし、タプルを 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!"
出力:
type before call: <type 'tuple'>
type in call: <type 'int'>
## traceback stuff ##
KeyError: 0
Board は、Python が満足するためにマッピング タイプから継承する必要がありますか? また、Python が最初にこのキャストを実行しようとするのはなぜですか?