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

クラスを用いない OOP を実践することで、OOP の理解を深めます。
※ Python1.5 で作成した例題を、Python3.1 で再構成しました。

事例:モジュールを起動する

■ 全項目を確認する

全ステップの「項目」を確認するには、関数 do を利用します。

$ python -i stack_func.py
>>> do()
...
2: step02 -- def pop(self):
■ 各項目を実行する

各ステップの「動作」を確認するには、関数 do に実引数を指定します。

>>> do(2)
>>> # -------------------------------------------------- step02
    
>>> >>> s = Stack(); s.items >>> push(s, "A"), s.items (None, ['A']) >>> push(s, "B"), s.items (None, ['A', 'B']) >>> pop(s), s.items ('B', ['A']) >>> pop(s), s.items ('A', ) >>> pop(s), s.items IndexError: pop from empty list (None, []) >>>
  • 関数オブジェクト pop を用意します。
  • 関数呼び出し pop() でスタック s から要素を降ろすと、その要素がリターン値になります。
  • 空のスタックを引数に関数 pop() を呼び出そうとすると、例外 IndexError を生成します。

事例:コードの解説

    def pop(self):         #1:
        try:
            return self.items.pop()
        except IndexError as error:
            print("IndexError:", error)
■ #1: 関数
    def pop(self):         #1:
        try:
            return self.items.pop()
        except IndexError as error:
            print("IndexError:", error)
関数 pop は、スタック操作を実現したものです。
  • 引数 self を介して、スタック操作の対象になるインスタンスオブジェクトを参照します。
  • インスタンス属性 self.items にメソッド呼び出し pop を適用すると、要素 item を末尾から削除します。
  • その要素を削除できないと、
    • 例外 IndexError を捕捉して、except ブロックを実行します。
》こちらに移動中です《TOP

関連記事

Last updated♪2009/12/18

*1:C言語で学ぶ OOP -- use(C,better), 1992-1993.