Python.use(better) #Stack: step00 -- class Stack(list)

記事一覧 Python.use(better)《Python3.1》

class Stack(list)

《著》小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2001/03/02 ● 第1版♪2003/05/25 ● 第2版♪2004/06/01 ● 第3版♪2009/02/28

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

■ 全項目を確認する

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

$ python -i stack_class.py
>>> do()
0: step00 -- class Stack(list):
...
■ 各項目を実行する

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

>>> do(0)
>>> # -------------------------------------------------- step00
>>> Stack; type(Stack)


>>> s = Stack(); s
[]
>>> s.push("A"), s
AttributeError: 'Stack' object has no attribute 'push'
>>>
  • クラスの名前 Stack(変数)を介して、クラスオブジェクト を参照できます。
  • クラスオブジェクト Stack の型は、type だと分かります。
  • クラス呼び出し Stack() によって、新たなスタック s(インスタンス)を生成します。
  • スタック s にメソッド push を適用すると、例外 AttributeError を生成して、エラーメッセージを出力します。

事例:コードの解説

    class Stack(list):     #1:
        pass                         #2:
■ #1: クラスの定義
    class Stack(list):     #1:

新たなクラスを定義するには、予約語 class を利用します。

  • class に続く名前 Stack を介して、新たな「クラス」オブジェクトを参照できます。
  • クラスの名前 class に続く括弧の中には、
    • その親になるクラス list(組み込み型)を指定します。

新たなクラス Stack は、組み込み型 list の子クラスになります。すると、すべての Stack インスタンスは、自動的に list の機能を継承します。つまり、list に対して有効なメソッドはすべて、Stack インスタンスにも有効です。

■ #2: 空文 pass
        pass                         #2:

クラス本体には pass だけを記述します。

  • Stack は、list を拡張しただけで、何も変化はありません。
  • ただし、組み込み型と違って、新たなインスタンス属性を付加できます。

《note》何もしないことに意義がある:構文規則に従うと、そこに文を記述する必要があっても、そこで何も実行したくないときには、空文として pass を利用します。

》こちらに移動中です《
TOP


関連記事

Last updated♪2009/12/16