私は DiveIntoPython を調べていて、これに出くわしました:
Java と Powerbuilder は、引数リストによる関数のオーバーロードをサポートしています。つまり、1 つのクラスに、同じ名前で引数の数が異なる複数のメソッド、または異なる型の引数を指定できます。他の言語 (特に PL/SQL) は、引数名による関数のオーバーロードもサポートしています。つまり、1 つのクラスは、同じ名前で同じ型の同じ数の引数を持つ複数のメソッドを持つことができますが、引数名は異なります。Python はこれらのどちらもサポートしていません。関数のオーバーロードの形式はまったくありません。メソッドはその名前だけで定義され、指定された名前を持つクラスごとに 1 つのメソッドしか存在できません。したがって、子孫クラスに
__init__
メソッドがある場合、常に先祖をオーバーライドします__init__
たとえ子孫が別の引数リストでそれを定義したとしても。そして、同じルールが他の方法にも適用されます。
__init__
これは、サブクラスのメソッドが常にスーパークラスのメソッドをオーバーライドするという大きな欠点ではない__init__
でしょうか? したがって、いくつかの変数を初期化し、クラスclass1
のいくつかの関数を呼び出す場合__init__
、そのサブクラスを派生させclass2(class1)
ます。すべてclass1
の変数を再初期化し、それらの関数をクラスで呼び出す必要がありますclass2
か__init__
?
私はこれらすべてを誤解していると確信しているので、誰かがこれを明確にしてくれれば素晴らしいと思います.