Effective Pythonで学ぶ - 3章 クラスと継承3
昨日までのあらすじ
Effective Pythonを真面目に読もうと思ったので読みはじめました。
3章 クラスと継承
- 項目 25:親クラスを superを使って初期化する
昨日のコンストラクタの話ですが、Python文法詳解の6.4.3継承にありました。 MRO(Method Resolution Order)で検索していくらしいです。同じ親を持つと兄弟も検索していくそうです。
おじいちゃんもおばあちゃんもobjectを継承して、super()を書いたら、こうなりました。
class GrandPa(object):
def __init__(self):
super().__init__()
print('おじいちゃん')
class Papa(GrandPa):
def __init__(self):
super().__init__()
print('パパ')
class GrandMa(object):
def __init__(self):
super().__init__()
print('おばあちゃん')
class Mama(GrandMa):
def __init__(self):
super().__init__()
print('ママ')
class Boku(Papa, Mama):
def __init__(self):
super().__init__()
print('僕')
boku = Boku()
大集合
おばあちゃん
ママ
おじいちゃん
パパ
僕
スッキリして良かったです。
結局、多重継承を使って1から書いたりしないのですが、知っておくのはいいことですね。 わからないと調べるし。
クラスの章が重い。これ、読み終わるのかな。。。