2011-08-21 8 views
4

可能性の重複による混乱:
Understanding Python super()[パイソン]:スーパー()

クラスBサブクラスクラスA、Bの__init__におけるので、我々はこのようなAの__init__を呼び出す必要があります。

class B(A): 
    def __init__(self): 
     A.__init__(self) 

しかし、super()、私はこのような何かを見た:

class B(A): 
    def __init__(self): 
     super(B, self).__init__() #or super().__init__() 

を私の質問は以下のとおりです。

  1. なぜsuper(B, self).__init__(self)?戻りプロキシオブジェクトはバインドされたオブジェクトなので、

  2. スーパーで2番目の引数を省略し、返されたプロキシオブジェクトがバインドされていない場合は、super(B).__init__(self)と書いてください。

super()
+1

他にも多数ありますので、まず検索してください。 [どうすればいいのですか?](http://stackoverflow.com/questions/607186/how-does-pythons-super-do-the-right-thing)[how-does-pythons-super-do-the-right-thing] -python-super-work-with-multiple-inheritance](http://stackoverflow.com/questions/3277367/how-does-pythons-super-work-with-multiple-inheritance)[usage-of-python-3 - スーパー](http://stackoverflow.com/questions/2771904/usage-of-python-3-スーパー) – agf

答えて

5

ベースクラスのインスタンスを返し、そうselfは暗黙他のメソッド呼び出しのよう__init__()に渡されます。

あなたの2番目の質問に関しては、それは正しいです。 super()をインスタンスなしで第2引数として呼び出すと、サブクラスインスタンスから構築されたインスタンスではなく、クラス自体への参照が返されます。

+0

私はそれを持っていると思う。ありがとう – Alcott