Супер функция вызывается внутри метода в 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()

Может кто-нибудь сказать, почему? Это то, что super вызывается изнутри метода в дочернем классе?

2 ответа

super на самом деле прокси для ваших базовых классов. Существует прокси класса (определенный в статическом методе или методе класса) и прокси экземпляра (определенный в методе экземпляра).

Ваш super(centralcorrdor,self).enter() оператор передает себя в качестве аргумента объекта, и если вы проверите enter подпись self, Таким образом, вы должны вызывать его для объекта экземпляра, а не для метода класса.

В общем, вы бы позвонили super(class, object) большую часть времени.

Вы должны использовать супер в методе. Для получения дополнительной информации вы можете проконсультироваться: программирование на Python или использование метода super-with-a-class-method. Надеюсь, это поможет вам;)

Другие вопросы по тегам