我正在尝试学习 python,但很难理解为什么这个类会抛出错误NameError: name 'self' is not defined
.我已经关注了如何在类中调用函数?并添加了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
你忘了把self
在方法签名中main()
。它应该看起来像这样
def main(self):
self.square(3)
如果没有那个,self
实际上没有在你的方法的范围内定义,所以Python会抱怨。
编辑:也,作为Some programmer dude
提到,您的代码永远不会创建该类的实例,只是执行 main。您的缩进也存在问题(可能是复制粘贴错误)。
试试这个:
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
像这样再次上课:
class Back(object):
def square(self,x):
y = x * x
return y
def main(self):
print(self.square(3))
if __name__ == "__main__":
back = Back()
back.main()
好吧,最后一个,我承认这样做确实没有意义。但我只是想说明Python中函数和方法之间的范围和区别(考虑到这个问题,我认为这个逻辑可能对OP有更多帮助)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)