【问题标题】:super function called inside a method in python 2在python 2中的方法内调用的超级函数
【发布时间】:2017-08-31 19:25:06
【问题描述】:

我正在尝试超级函数,下面是我正在执行的代码。

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?

【问题讨论】:

  • 您可以通过选择代码块并单击带有花括号的按钮来格式化帖子中的代码行。
  • 您似乎对课程的运作方式感到困惑。为什么要在方法之外调用 super 或 print?
  • 另外,你键盘上的i 键坏了吗?该代码中缺少七个is。
  • 是的 daniel 我刚开始学习 python。所以为了使用 super 它应该总是在某种方法下
  • 是的,'i' 键不起作用。 :(

标签: python python-2.7 super


【解决方案1】:

您必须在方法中使用 super。更多信息您可以咨询: python-programmingusing-super-with-a-class-method 我希望这对你有帮助;)

【讨论】:

    【解决方案2】:

    super 实际上是您的基类的代理。有类代理(定义在静态或类方法中)和实例代理(定义在实例方法中)。

    您的super(centralcorrdor,self).enter() 语句将self 作为对象参数传递,如果您检查enter,则签名为self。因此,您必须在实例对象上调用它,而不是在类方法中。

    一般来说,您大部分时间都会致电super(class, object)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      • 2011-08-11
      • 2011-01-24
      • 1970-01-01
      相关资源
      最近更新 更多