Google App Engine中的函数调用 - Python
在 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
我尝试在 display(query)
函数里面导入 from google.appengine.ext import webapp
,但这并没有解决问题。
我哪里做错了,应该怎么修复呢?谢谢!
1 个回答
3
self
是一个约定俗成的名字,用来表示传给类实例方法的第一个参数。当你调用一个类的实例方法时,这个实例会把自己作为第一个参数传进去。通常情况下,实例方法的第一个参数都会叫做 self
。
所以,当你把方法的一部分功能(可能是 get
或 post
,在 webapp.RequestHandler
的子类中)提取到另一个函数时,你就不能再用 self
来获取 response
属性了。
解决这个问题最简单的方法可能是,在这个函数中返回你想写入响应的内容。然后你可以在方法里像之前那样,使用 self.response.out.write
来写入你函数的返回值。