Супер функция вызывается внутри метода в 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. Надеюсь, это поможет вам;)