Python.use(better) #Stack: step02 -- def pop(self)
‖記事一覧‖ Python.use(better)《Python3.1》
def pop(self)
《著》小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2001/03/02 ● 第1版♪2003/05/25 ● 第2版♪2004/06/01 ● 第3版♪2009/02/28
事例:モジュールを起動する
■ 全項目を確認する
全ステップの「項目」を確認するには、関数 do を利用します。
$ python -i stack_class.py >>> do() ... 2: step02 -- def pop(self):
■ 各項目を実行する
各ステップの「動作」を確認するには、関数 do に実引数を指定します。
>>> do(2) >>> # -------------------------------------------------- step02 >>> s = Stack(); s >>> s.push("A"), s (None, ['A']) >>> s.push("B"), s (None, ['A', 'B']) >>> s.pop(), s ('B', ['A']) >>> s.pop(), s ('A', ) >>> s.pop(), s IndexError: pop from empty list (None, []) >>>
- クラス呼び出し Stack() によって、新たなスタック s(インスタンス)を生成します。
- スタック s にメソッド push を適用すると、末尾に要素を追加するとともに、None がリターン値になります。
- スタック s にメソッド pop を適用すると、末尾から要素を削除するとともに、その要素がリターン値になります。
- 空のスタック s にメソッド pop を適用すると、例外 IndexError を生成して、エラーメッセージを出力します。
- @
事例:コードの解説
class Stack(list): def push(self, item): self.append(item) def pop(self): try: #1: return super(Stack,self).pop() except IndexError as error: #2: print("IndexError:", error)
》こちらに移動中です《
》こちらに移動中です《
■ #1: 例外の補足
try: #1:
return super(Stack,self).pop()
新たなメソッドを定義するには、予約語 def を利用します。
- def に続く名前 push を介して、新たな「メソッド」オブジェクトを参照できます。
- メソッドの名前 push に続く括弧の中には、
- その対象になるインスタンス self に続けて、
- 追加したい要素を表わす引数 item を指定します。
■ #2: メソッドの本体
self.append(item) #2:
メソッドの本体には、要素を追加するための具体的な処理を記述します。
- メソッド呼び出し push の対象になるインスタンス self に対して、メソッド append を適用すると、リスト list の末尾に要素 item を追加します。
機能継承により、インスタンス self に対してメソッドを呼び出すと、必要なら親クラス(ここでは list)のメソッドを呼び出します。
■ #3: メソッドのリターン値
メソッドのリターン値を省略すると、None を指定したものと見なされます。つまり、メソッド本体の末尾に
def push(self, item): ... return None #3:
と記述してあるのと同じです。
》こちらに移動中です《
↑TOP