Python.use(better) #Stack: step03 -- class Stack(object):

記事一覧入門編基礎編応用編中級編

Python.use(better)
Stack: step03 -- class Stack(object):

《著》小粒ちゃん+∞《監修》小泉ひよ子とタマゴ倶楽部
第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):
1: step01 -- def push(self, item):
2: step02 -- def pop(self):
3: step03 -- class Stack(object):
4: step04 -- def __repr__(self):
5: step05 -- def push(self, item):
6: step06 -- def pop(self):
>>>
■ 各項目を実行する

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

>>> do(3)
>>> # -------------------------------------------------- step03
>>> s = Stack(); s
<__main__.Stack object at 0x13649f0>
>>>
  • クラス呼び出し Stack() によって、新たなスタック(インスタンス)s を生成します。
  • 変数名 s を介して、インスタンスオブジェクト <__main__.Stack object at 0x13649f0> を参照できます。

事例:コードの解説

    class Stack(object):         #1:
        def __init__(self):      #2:
            self.items = []
■ #1: クラスの定義
    class Stack(object):         #1:

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

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

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


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

■ #2: メソッド __init__
        def __init__(self):      #2:
            self.items = []

メソッド __init__ は、クラス呼び出しに呼応して、生成したインスタンスを初期設定します。

新たなメソッドを定義するには、予約語 def を利用します。

  • メソッドの名前 __init__ に続く括弧の中には、
■ #2: メソッドの本体
            self.items = []

メソッドの本体には、インスタンス属性を初期設定するための具体的な処理を記述します。

■ #3: メソッドのリターン値

メソッドのリターン値を省略すると、None を指定したものと見なされます。つまり、メソッド本体の末尾に

        def __init__(self):      #2:
            self.items = []
            return None      #3:

と記述してあるのと同じです。

《Note》メソッド __init__ のリターン値

        def __init__(self):      #2:
            self.items = []
            return True

メソッド __init__ が None 以外をリターン値にすると、次のように、

>>> s = Stack(); s
Traceback (most recent call last):
  ...
TypeError: __init__() should return None, not 'bool'

例外 TypeError を生成します。


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


関連記事

Last updated♪2009/10/26