■
♪組み込み関数の中から、本書で紹介したものについて簡単に紹介します。本文を補足するのが目的なので、その全容については、公式マニュアルなどを参照してください。
old-style class
組み込み関数 super は、指定した属性値を獲得します。
##---------------------------------------- Python 2.1 class Parent: def __init__(self, name): self.name = name def __str__(self): return "%s"%self.name def show(self): return "My name is %s"%( self.name)
親クラスを指定しないと、そのクラスを頂点とする、新たなクラス階層が形成されます。
class Child(Parent): def __init__(self, name, age): Parent.__init__(self, name) self.age = age def __str__(self): return "%s, %d"%( Parent.__str__(self), self.age) def show(self): return "%s, and I'm %d years old"%( Parent.show(self), self.age)
親クラスのメソッドを呼び出すときには、そのクラス Parent を指定する必要があります。以下のコードを実行すると、
print "-"*40,"Python 2.1" e = Parent("Jonh Doe") print e; print e.show() e = Child("Jane Doe", 23) print e; print e.show()
次のような出力が得られます。
---------------------------------------- Python 2.1 Jonh Doe My name is Jonh Doe Jane Doe, 23 My name is Jane Doe, and I'm 23 years old
new-style class《第2版》
統合された概念モデル(Python 2.2 以降)に沿って、object の傘下に新たなクラスを定義すると、組み込み型/利用者定義クラスの違いを区別せずに扱えます。
##---------------------------------------- Python 2.2 class Parent(object): def __init__(self, name): self.name = name def __str__(self): return "%s"%self.name def show(self): return "My name is %s"%self.name class Child(Parent): def __init__(self, name, age): super(Child, self).__init__(name) self.age = age def __str__(self): return "%s, %d"%( super(Child, self).__str__(), self.age) def show(self): return "%s, and I'm %d years old"%( super(Child, self).show(), self.age)
親クラスのメソッドを呼び出すときには、組み込み関数 Parent を利用できます。多重継承を認めているので、単に super などと記述できません。