こんな状況も想定してみよう。
スタックの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): # インスタンスに[ ]を利用したときの処理
# 処理内容
コメント