В 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 переменную в каждой функции в классе можно найти здесь.

Другие вопросы по тегам