在main.py
我有一个重复几次的显示代码。因此,我创建了f1.py
并将代码放在f1.py
中作为函数display(query)
,我将其从main.py
称为f1.display(query)
。
但是display(query)
有一行
self.response.out.write(
# some code
)
我收到错误消息:
self.response.out.write(
NameError: global name 'self' is not defined
我尝试在from google.appengine.ext import webapp
函数中导入display(query)
,但这没有帮助。
我做错了什么,我该如何解决?谢谢!
答案 0 :(得分:3)
self
是传递给类实例方法的第一个参数的传统名称。类实例将调用自身作为调用它们时所有方法的第一个参数。通常的做法是为实例方法self
命名第一个参数。
因此,当您将方法的一部分(可能是get
或post
在webapp.RequestHandler
)的子功能上计算到另一个函数时,您就不能再引用{{1获取self
属性。
解决此问题的最简单方法可能是将您希望写入的输出返回到函数中的响应。然后你可以像在重构之前那样用方法中的函数返回值来调用response
。