Pythonのお勉強 Part17
■ このスレッドは過去ログ倉庫に格納されています
0157デフォルトの名無しさん
2007/02/25(日) 19:45:50いや、自分はまだJavaから来たばかりで、たしかに Python よく分ってないかも
しれないけど、そういう話とは違うと思うけどな…。
Javaでは コンストラクタとフィールドの設定が分かれているけど、
Python では __init__ とフィールドの設定がくっついているでしょ。
Java のような感じでやれないと、
親クラスを作る時点でインスタンスのフィールドを、
(これからどんなサブクラスが作られるのかも分らないのに)
将来作るかもしれないサブクラスの分もすべて予測して
設定しておかないといけないような、という話で。
(Javaはあとで拡張できる。Python、無理っぽい。
__init__ の中でフィールド設定しておかないと、
setメソッドの前にgetメソッドされると、エラー出てしまうし)
それができないと、将来それが必要になったとき、
あとから親クラスを直さないといけなくなる。
どんな場合でも、目の前の10行前後を直すだけで対応できるように
プログラムする、というのがオブジェクト指向の目標である以上
(そううまくいくもんじゃないけど)、それはやっぱりまずいだろうなと。
どうもサブクラスで __init__ を
オーバーライドしちゃうと、サブクラスがサブクラスでない
ことになって、親クラスのメソッドを使えなくなるみたいなんだよね。
ただ、もう少し検証しないと、断定はできないけど。
■ このスレッドは過去ログ倉庫に格納されています