#navi_header|Python| 基底クラスのメソッドを実行する手法を示します。 * super()を使う(新形式のみ) 新形式の場合はsuper(クラス, インスタンス)関数を使って以下のように実装できます。 class S(object): def saySpam(self): print 'Spam' def __init__(self, name): self.name = name class C(S): def __init__(self, name, age): super(self.__class__, self).__init__(name) self.age = age def saySpam(self): super(self.__class__, self).saySpam() print 'Bacon' 実行してみます。 c = C('Spam', 24) c.saySpam() print c.name, c.age → # c.saySpam() : Spam Bacon # print c.name, c.age : Spam 24 ちなみに、 super(self.__class__, self).saySpam() super(self.__class__, self).__init__(name) の部分は super(C, self).saySpam() super(C, self).__init__(name) と書いてもOKですが、 [[215]] 77Pの "Use self.__class__ instead of hardcoded class names" の方が良いかなと思ってそちらにしてみました。 * 新形式でない場合 新形式でない場合はsuper()が使えない為、普通にインスタンスをself引数として渡します。 super(self.__class__, self).__init__(name) -> S3.__init__(self, name) super(self.__class__, self).saySpam() -> S3.saySpam(self) #navi_footer|Python|