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

Function NameError:在类内调用方法时未定义全局名称,function,python-2.7,runtime-error,Function,Python 2.7,Runtime Error,我试图从主函数调用同一类中的另一个函数,我似乎可以找出错误所在 我不断遇到与未定义函数相关的错误,我不确定如何解决它: NameError:未定义全局名称“结果” 您需要将self(对象的实例)传递到对象的方法中 class Darts: def main(self) : print self.results() def results(self) : round_result_totals = "Stuff" r

我试图从主函数调用同一类中的另一个函数,我似乎可以找出错误所在

我不断遇到与未定义函数相关的错误,我不确定如何解决它:

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

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

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

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

您缺少类中对
self
的所有必需引用。应该是这样的:

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

    def results(self) :
        round_result_totals = "Stuff"
        return round_result_totals
这是你的电话号码。《公约》第五段提到了《公约》
self


简而言之:Python类的方法的第一个参数会自动传递到调用该方法的类的实例的引用中(前提是该方法被称为实例方法)。这是由Python的解释器自动完成的。但是,此参数仍然需要在方法定义中明确说明,惯例是将其称为
self

请确保在函数中正确定义
self
,并在执行任何其他操作之前先初始化对象。您不能只从
调用
函数
,而不创建该
实例
,并从该
实例
调用
函数(而不是类)。通常,您希望在python类中有一个
\uuuu init\uuuu

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()

实际调用函数的代码将非常有用。更新后的代码只是调用main(),如果您在init函数中为类创建了一些变量,并且需要在main函数中引用它们,这将如何工作。假设init类中有:a=500,需要在主类中使用“a”来增加它。“a+=1”非常感谢!我一直在自学python,这对阅读您的回复和提供的链接非常有帮助!
class Darts:
     def __init__(self):
         self.a = 500

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


Dart1 = Darts()
Dart1.main()