PythonでClassの__init__メソッドの継承を試す。
PythonでClassのインスタンス化する時のコンストラクタである__init__メソッドの継承を試して見ました。
まずFirstクラスをインスタンス化するとxとyの値が設定されます。次にFirstクラスを親とするSecondクラスをインスタンス化した場合にxは親を継承、yはSecond用の値で上書き、さらにzを新規追加するという処理をしています。
ソースコード
class First(object): def __init__(self): self.x = "first init x" self.y = "first init y" class Second(First): def __init__(self): First.__init__(self) # SuperClassであるFirstの__init__メソッドを実行 self.y = "second init y" # First.yの値をSecond.yの値で上書き self.z = "second init z" # Firstクラスに存在しない値をSecond.zとして追加する if __name__ == '__main__': hoge = First() print "hoge.x: %s" % hoge.x print "hoge.y: %s" % hoge.y fuga = Second() print "fuga.x: %s" % fuga.x print "fuga.y: %s" % fuga.y print "fuga.z: %s" % fuga.z
実行結果
macbook:lab ox$ python hoge.py hoge.x: first init x hoge.y: first init y fuga.x: first init x # 継承 fuga.y: second init y # 上書き fuga.z: second init z # 新規追加
うーん便利。