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


関連記事

Last updated♪2009/10/21