Python初心者です。
継承について、調べたので備忘録として置いておきます。
実行環境
Windows7 64bit
Python 2.7
親クラスのコンストラクタの再利用
classTest.py
# -*- coding: utf-8 -*-
class BaseClass(object): # objectクラスを継承すること
def __init__(self, a, b):
self.a = a
self.b = b
def sum(self):
return self.a + self.b
class DerivedClass(BaseClass):
def __init__(self, a, b):
# 再利用している
super(DerivedClass, self).__init__(a, b)
# スーパークラスのメソッドもここで使える
print self.sum()
if __name__ == '__main__':
cls = DerivedClass(10, 5)
print "sum:" + str(cls.sum())
print "a:" + str(cls.a)
print "b:" + str(cls.b)
classTest.pyの出力結果
15
sum:15
a:10
b:5
説明
DeruvedClass(サブクラス)の__init__()内で
super(DerivedClass, self).__init__(a, b)
と記述する。
再利用しない場合には、DerivedClassでまた同じコードを書かなければなりません。なので、super()を使い、スーパークラスを取得し、コンストラクタを再利用しています。
また、
print self.sum()
とすぐに使える(そりゃそうか)