В Python WebApp2, как положить __init__ в обработчик (для получения и публикации)
Как я могу создать код инициализации? Когда я ставлю __init__
contructor всегда говорит мне, что параметры неверны. Также, пожалуйста, привел пример, также используя __new__
и один с помощью super()
и почему мы должны использовать или не использовать их.
import webapp2
class MainHandler( webapp2.RequestHandler ):
def __init__( self ):
#initialization code/vars
x = 1
def get( self ):
#code for get here
self.response.write( x+1 )
def post( self ):
#code for post here
self.response.write( x+2 )
app = webapp2.WSGIApplication ([('/', MainHandler)], debug = True)
3 ответа
Наконец-то понял... Проблема в том, что переопределение "webapp2.RequestHandler" требует специальной специальной обработки
из руководства webapp2:
Если вы хотите переопределить webapp2.RequestHandler. Методinit(), вы должны вызвать webapp2.RequestHandler.initialize() в начале метода. Он установит текущий запрос, ответ и объект приложения как атрибуты обработчика. Пример:
class MyHandler(webapp2.RequestHandler):
def __init__(self, request, response):
# Set self.request, self.response and self.app.
self.initialize(request, response)
# ... add your custom initializations here ...
# ...
... и все... теперь работает как положено;-)
Если вы не передаете никаких аргументов или не включаете свой собственный код в __init__
метод, обычно нет необходимости даже создавать его. Вы просто будете использовать webapp2.RequestHandler
"s __init__
метод.
Если вам нужно сделать один, вы все равно должны позвонить webapp2.RequestHandler.__init__
:
class theHandler(webapp2.RequestHandler):
def __init__(self, your_arg, *args, **kwargs):
super(theHandler, self).__init__(*args, **kwargs)
self.your_arg = your_arg
Вам нужно иметь self
переменная во всех функциях вашего класса. Вам нужно включить эту переменную, чтобы функция работала в вашем классе.
Хорошее объяснение необходимости self
переменную в каждой функции в классе можно найти здесь.