スタック構造のデータを使用している時、スタックの長さを確かめたくなったので次のようにコードを書いてみた。
print(len(stack1))
# >> Error
結果はエラーだった。
単元4では、インスタンスは変数のように使えると言ったじゃないか!どうにかならないの?
というようなモチベーションでこの問題を解決していきたいと思う。
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): # インスタンスに関数lenを使用されたときの処理
return len(self.stack) # 今回の処理では、インスタンス変数のstackを関数lenに適応させることにした
# 動作確認プログラム
stack1 = Stack()
print(len(stack1))
stack1.push(0)
stack1.push(1)
print(len(stack1))
0 [0] [0, 1] 2
解説
- __len__メソッドを使用することで関数
len
の処理を定めることができる def __len__(self): # インスタンスに関数lenを使用されたときの処理
# 処理内容
コメント