Вызов функции в Google App Engine - Python - PullRequest
1 голос
/ 23 марта 2011

В 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)функция, но это не помогло.

Что я делаю не так и как я могу это исправить?Спасибо!

1 Ответ

3 голосов
/ 23 марта 2011

self - это условное имя для первого аргумента, передаваемого в методы экземпляра класса.Экземпляр класса передаст ссылку на себя в качестве первого аргумента всем его методам при вызове.Обычной практикой является присвоение имен первому параметру для методов экземпляра self.

Итак, когда вы выделили часть функциональности вашего метода (предположительно get или post на подкласс webapp.RequestHandler)другой функции, вы больше не можете ссылаться на self и получать свойство response.

Самый простой способ исправить это, вероятно, состоит в том, чтобы вернуть результат, который вы хотите записать, в ответ в функции.Затем вы можете вызвать self.response.out.write с возвращаемым значением вашей функции изнутри в методе, как вы это делали до рефакторинга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...