我正在尝试从我的main函数调用同一个类中的不同函数,我似乎可以找出错误的位置。
我一直收到与未定义的函数有关的错误,我不知道如何解决它:
NameError:未定义全局名称“结果”
class Darts:
def main() :
print results()
def results() :
round_result_totals = "Stuff"
return round_result_totals
#RUNNING CODE
main()
答案 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 classes。 this section的第五段提到了self
的惯例。
简单地说:Python类方法的第一个参数自动传递给该类的实例的引用,从该实例调用该方法(假设它被称为实例方法)。这是由Python的解释器自动完成的。但是,仍然需要在方法定义中明确声明此参数,并且惯例是将其称为self
。