0

スーパークラスの開始関数を呼び出す次の使用方法の重要な違いが何かあるとしたら?

class Child_1(Parent):
    def __init__(self):
        super(Child, self).__init__()

class Child_2(Parent):
    def __init__(self):
        super(Parent, self).__init__()

class Child_3(Parent):
    def __init__(self):
        Parent.__init__(self)
4

1 に答える 1

8

最初の形式 (タイプミスを修正して、super の呼び出しで Child_1 にします) は、一般的に必要な形式です。これにより、継承階層で正しいメソッドが検索されます。

2 番目の形式では、このメソッドを実装する Parent の親クラスを探しています。これを行うには、非常に特殊なユース ケース (親をスキップしたい場合は、親から派生させないでください) が必要です。それをしたい。

多くの場合、3 番目は 1 番目と同じことを行うことになりますが、Parent のコードを見ないと、確信が持てません。3 番目のメソッドに対する 1 番目のメソッドの利点は、子の基底クラスを変更でき、正しいメソッドが引き続き呼び出されることです。

また、最初の形式では協調多重継承が可能です。この投稿またはこの記事を参照して、これが役立つまたは必要なケースを理解してください。

于 2013-06-15T03:11:47.587 に答える