NameError:在类中调用方法时未定义全局名称

时间:2015-04-27 03:50:08

标签: function python-2.7 runtime-error

我正在尝试从我的main函数调用同一个类中的不同函数,我似乎可以找出错误的位置。

我一直收到与未定义的函数有关的错误,我不知道如何解决它:

  

NameError:未定义全局名称“结果”

class Darts:
     def main() :
          print results()

     def results() :
          round_result_totals = "Stuff"
          return round_result_totals

    #RUNNING CODE
    main()

3 个答案:

答案 0 :(得分:3)

确保在功能中正确定义self并在执行任何其他操作之前先初始化对象。您无法从function拨打class,而无需创建instance class并从function调用instance (不是课堂)。通常你想在你的python类中有一个__init__

class Darts:
     def __init__(self):
         pass

     def main(self):
          print(self.results())

     def results(self):
          round_result_totals = "Stuff"
          return round_result_totals

Dart1 = Darts()
Dart1.main()

如果要使用变量,self对于封装也很重要。

class Darts:
     def __init__(self):
         self.a = 500

     def main(self):
          self.a += 1
          print(self.a)


Dart1 = Darts()
Dart1.main()

答案 1 :(得分:1)

您需要将self(对象的实例)传递到对象的方法中。

class Darts:
     def main(self) :
          print self.results()

     def results(self) :
          round_result_totals = "Stuff"
          return round_result_totals

答案 2 :(得分:1)

您缺少课堂内self所需的所有引用。它应该是这样的:

class Darts:
    def main(self) :
        print self.results()

    def results(self) :
        round_result_totals = "Stuff"
        return round_result_totals

这是Python documentation on classesthis section的第五段提到了self的惯例。

简单地说:Python类方法的第一个参数自动传递给该类的实例的引用,从该实例调用该方法(假设它被称为实例方法)。这是由Python的解释器自动完成的。但是,仍然需要在方法定义中明确声明此参数,并且惯例是将其称为self