__getitem__ メソッド

こんな状況も想定してみよう。

スタックのN番目にどんなデータが入っているかを確認したい。こんなプログラムを書いてみた。

print(stack1[0])

>> Error

今回も結果はエラーだった。
もしかして、これもどうにかなったりするんじゃないの?

というようなモチベーションでこちらの問題も解決していこう!

class Stack():
    def __init__(self):
        self.stack = []
    def push(self, arg1):
        self.stack.append(arg1)
        print(self.stack)
    def pop(self):
        value = self.stack[-1]
        del self.stack[-1]
        return value
    def __len__(self):
        return len(self.stack)

# ----------ここから新規内容----------
    def __getitem__(self, key):  # インスタンスに[ ]を使用されたときの処理
        return self.stack[key]  # 今回の処理では、インスタンス変数のstackを[ ]に適応させることにした
# 動作確認プログラム
stack1 = Stack()
stack1.push(10)
stack1.push(100)
print(stack1[0], stack1[1])
[10]
[10, 100]
10 100

インスタンスに[ ]を使用して、適当らしい出力を得ることができた!

解説

  • __getitem__メソッドを使用することで[ ]を利用したときの処理を定めることができる
  • def __getitem__(self): # インスタンスに[ ]を利用したときの処理
       # 処理内容

コメント

タイトルとURLをコピーしました