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): >>>
事例:コードの解説
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__ に続く括弧の中には、
- その対象になるインスタンス self を指定します。
■ #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