2017-08-31 1 views
-1

私はスーパーファンクションで自分の手を試していましたが、以下は実行していたコードです。スーパーファンクションはPythonのメソッドの中で呼び出されました2

class scene(object): 
    def enter(self): 
     print "a vllan s n your way. what you'll do?" 

class centralcorrdor(scene): 
    print "startng pont of the game." 
    super(centralcorrdor,self).enter() 


a = centralcorrdor() 

ただし、これはエラーです。

class centralcorrdor(scene): 
File "game.py", line 8, in centralcorrdor 
super(centralcorrdor,self).enter() 

NameError: name 'centralcorrdor' is not defined 

これはありません。

class scene(object): 
    def enter(self): 
     print "a vllan s n your way. what you'll do?" 

class centralcorrdor(scene): 
    #print "startng pont of the game." 
    def func(self): 
     super(centralcorrdor,self).enter() 
    #scene.enter() 

a = centralcorrdor() 
a.func() 

誰かがなぜそれを伝えることができますか?それはスーパークラスが子クラスのメソッドの中から呼び出されるのでしょうか?

+1

コードブロックを選択し、中括弧でボタンをクリックすると、投稿のコード行を整形できます。 – glibdud

+2

クラスの仕組みについては混乱しているようです。なぜあなたはsuper- と呼ぶのですか、あるいは方法の外側に印刷しますか? –

+0

また、キーボードの 'i'キーが壊れていますか?そのコードには7つの「i」があります。 –

答えて

0

superは実際にあなたのベースクラスへのプロキシです。クラス・プロキシ(静的メソッドまたはクラス・メソッドで定義される)およびインスタンス・プロキシ(インスタンス・メソッドで定義される)があります。

super(centralcorrdor,self).enter()ステートメントは、オブジェクトの引数としてselfを渡します。の署名がselfであることを確認してください。したがって、クラスメソッドではなくインスタンスオブジェクトで呼び出す必要があります。

通常、ほとんどの場合、super(class, object)に電話をかけます。

関連する問題