はじめに
移植やってます
多重継承 (Python)
class NoOpBaseReader(object):
def __init__(self, *args, **kwargs):
pass
class IndexedReaderMixin(NoOpBaseReader):
class IndexedXML(IndexedReaderMixin, XML):
このIndexedReaderMixin
が次に継承される際多重継承となるため、Mixin化を図りたいと思います。
親クラスのインスタンス化でpass
しているので、弊害は少ないと思いますが。
コメント欄にて教えていただきましたが、~~多重継承といいましても、単一継承を何回も繰り返しているだけのようです。~~ダイヤモンド継承になっていてもうまく検索できる仕組みのようです。
[追記]
いつも参照させてもらっている、お気楽プログラミングさんに分かりやすい解説がありました。
お気楽 Python3 プログラミング超入門
module (Ruby)
module A
def __init__(*args)
puts "module A"
end
end
class B
include A
def __init__(*args)
puts "class B"
super
end
end
p B.ancestors
b = B.new.__init__
# [B, A, Object, Kernel, BasicObject]
# class B
# module A
Ruby
にとって__init__
メソッドは特殊なメソッドではないので、継承チェーンに気を付ければ、問題ないと思います。
ということは、ちょっと格好悪くても、継承を繰り返せば良さそうです。
@shiracamus さん、ありがとうございました。
メモ
- Python の 多重継承 を学習した
- 道のりは遠そう