def main(self):
self.square(3)
除此之外,self
实际上未在您的方法范围内定义,因此Python会抱怨。
[我正在尝试学习python并乐于理解为什么该类引发错误NameError: name 'self' is not defined
。我遵循Python call function within class并添加了self
,但这没有帮助。这是代码,任何人都可以指出原因。
class Back(object):
def square(self,x):
y = x * x
return y
def main():
self.square(3)
if __name__ == "__main__":
main()
而且我使用python square.py
称呼它>
我正在尝试学习python,并且在理解此类为什么会引发错误NameError时有所作为:Name'self'未定义。我在类内遵循Python调用函数并添加了...] [
self
放在main()
的方法签名中。它应该看起来像这样 def main(self):
self.square(3)
除此之外,self
实际上未在您的方法范围内定义,因此Python会抱怨。
编辑:而且,正如[C0]所提到的,您的代码永远不会创建只执行main的类的实例。您的缩进也有问题(可能是复制粘贴错误)。尝试以下方法:
Some programmer dude
注意在根级别如何定义class Back(object):
def square(self,x):
y = x * x
return y
def main():
back = Back()
print(back.square(3))
if __name__ == "__main__":
main()
(不像main
那样缩进)。它不是这种方法的一部分,不需要square
。您可以再次将其设为self
类的方法,如下所示:
Back
好吧,这最后一个,我承认这样做不是很有意义。但是我只是想说明范围以及python中函数和方法之间的区别(考虑到这个问题,我认为这种逻辑可能会对OP有所帮助)。