Pythonの基礎 オブジェクト、クラスの継承編
クラスの継承について
もちろんクラスの継承もあります。
ちょっと頑張って見ていきましょうね。
前回のコード
class Person(object): def __init__(self, name): self.name = name def greet(self): print "my name is %s " % self.name tak = Person("Takuya") print tak.name tak.greet()
今回はこのPersonを継承したクラスを作っていきます。
Personを継承したコード
class Person(object): def __init__(self, name): self.name = name def greet(self): print "my name is %s " % self.name class SuperPeson(Person): def shout(self): print "%s is SUPER!" % self.name yam = SuperPerson("Yamamoto") print yam.name yam.greet() yam.shout()
#実行結果 Yamamoto my name is Yamamoto Yamamoto is SUPER!
直感で分かると思いますが、1行ずつ考えてみましょう。
class SuperPeson(Person):
クラスの宣言です。SuperPersonというクラスを宣言しています。
(Person)は、上記のPersonクラスのことです。
Personを継承したのがSuperPersonということですね。
継承が分からない人は、別のところで少し勉強しましょう!
SuperPersonはPersonの機能を継承して、さらに独自に拡張したものと言えます。
したがって、Personのself.nameはSuperPersonにも存在します。
また、greet()はSuperPersonにも存在します。
shoutは独自に拡張したクラスメソッド
def shout(self): print "%s is SUPER!" % self.name
ここがSuperPersonの独自のメソッドですね。 Personの機能プラス、shout()がSuperPersonということになります。
実行結果もそのまま。
Personと同じくself.nameに引数のnameが代入され
Personのクラスメソッドのgreet()でself.nameを使用して
SuperPersonのクラスメソッドshout()にもself.nameを使用する
クラスの超超超超基本を説明しました。
ドットインストールさんのコードの引用です。すみません。
最初は???なコードも、1行ずつきちんと解釈していけば大丈夫ですね。
- 作者: Mark Lutz,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/02/26
- メディア: 大型本
- 購入: 12人 クリック: 423回
- この商品を含むブログ (124件) を見る