Google App Engine中的函数调用 - Python

1 投票
1 回答
515 浏览
提问于 2025-04-16 14:14

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

所以,当你把方法的一部分功能(可能是 getpost,在 webapp.RequestHandler 的子类中)提取到另一个函数时,你就不能再用 self 来获取 response 属性了。

解决这个问题最简单的方法可能是,在这个函数中返回你想写入响应的内容。然后你可以在方法里像之前那样,使用 self.response.out.write 来写入你函数的返回值。

撰写回答