NameError: global name not defined when calling method inside class
NameError: global name not defined when calling method inside class
我试图从我的主函数调用同一个 class 中的另一个函数,我似乎可以找出错误所在。
我不断收到与未定义函数相关的错误,我不确定如何解决它:
NameError: global name 'results' is not defined
class Darts:
def main() :
print results()
def results() :
round_result_totals = "Stuff"
return round_result_totals
#RUNNING CODE
main()
您需要将 self(对象的实例)传递给对象的方法。
class Darts:
def main(self) :
print self.results()
def results(self) :
round_result_totals = "Stuff"
return round_result_totals
您在 class 中缺少对 self
的所有必需引用。它应该是这样的:
class Darts:
def main(self) :
print self.results()
def results(self) :
round_result_totals = "Stuff"
return round_result_totals
此处Python documentation on classes. And the fifth paragraph of this section参考了self
的约定。
简而言之:Python class 的方法的第一个参数自动传递给调用该方法的 class 实例的引用(前提是它被称为实例方法)。这是由 Python 的解释器自动完成的。然而,这个参数仍然需要在方法定义中显式声明,约定是称它为self
.
确保您在函数中正确定义 self
并在执行任何其他操作之前先 初始化 一个对象。您不能只从 class
调用 function
而无需创建 class
的 instance
并从 instance
调用 function
(不是 CLASS)。通常你想在你的 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()
我试图从我的主函数调用同一个 class 中的另一个函数,我似乎可以找出错误所在。
我不断收到与未定义函数相关的错误,我不确定如何解决它:
NameError: global name 'results' is not defined
class Darts:
def main() :
print results()
def results() :
round_result_totals = "Stuff"
return round_result_totals
#RUNNING CODE
main()
您需要将 self(对象的实例)传递给对象的方法。
class Darts:
def main(self) :
print self.results()
def results(self) :
round_result_totals = "Stuff"
return round_result_totals
您在 class 中缺少对 self
的所有必需引用。它应该是这样的:
class Darts:
def main(self) :
print self.results()
def results(self) :
round_result_totals = "Stuff"
return round_result_totals
此处Python documentation on classes. And the fifth paragraph of this section参考了self
的约定。
简而言之:Python class 的方法的第一个参数自动传递给调用该方法的 class 实例的引用(前提是它被称为实例方法)。这是由 Python 的解释器自动完成的。然而,这个参数仍然需要在方法定义中显式声明,约定是称它为self
.
确保您在函数中正确定义 self
并在执行任何其他操作之前先 初始化 一个对象。您不能只从 class
调用 function
而无需创建 class
的 instance
并从 instance
调用 function
(不是 CLASS)。通常你想在你的 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()