Hatena::Groupfukuoka-py

uchikoshi22.py

 | 

2011-10-29

初めてのsuper()メソッド

12:52

エキスパートPythonの中でsuper()メソッドのことが書かれていたんですが、super()メソッドを使ったことがなかったので少し調べました。


super()メソッドは第一引数に指定されたクラスの親クラスを返すメソッドで、以下のようなクラスの継承で使うことができます。



OyaクラスをKodomoクラスで継承し、Oyaクラスspamメソッドを実行するKodomoクラスのeggsメソッドを実装した例です。

class Oya(object):
    def spam(self):
        print "I am a father"

class Kodomo(Oya):
    def eggs(self):
        super(Kodomo, self).spam()

c = Kodomo()
c.eggs()
c.spam() // 直接親クラスのメソッドを呼び出している例です。

これを実行すると、当然、こう表示されます。

I am a father

I am a father



これをsuper()メソッドを使わずに書くとこうなります。

class Oya():
    def __init__(self):
        pass

    def spam(self):
        print "I am a father"


class Kodomo(Oya):
    def __init__(self):
        Oya.__init__(self)

    def eggs(self):
        self.spam()

c = Kodomo()
c.eggs()

watswats2011/10/30 23:08最近 m-hashimoto さんにfukuoka.pyに入れて頂きました。読書会毎週やる予定ですので、よろしくお願いします!

BellaBella2012/02/21 07:38That insihgt's just what I've been looking for. Thanks!

nscpytjnscpytj2012/02/21 20:04klqdDY <a href="http://iytrtayqfbas.com/">iytrtayqfbas</a>

yfbhlzjqyfbhlzjq2012/02/29 01:55iiT77w <a href="http://xtgusbqbatkt.com/">xtgusbqbatkt</a>

 |