9

如何创建初始化代码?当我把__init__constructor总是告诉我参数是错误的。另外请举一个例子也使用__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 )

4

3 回答 3

14

终于明白了...问题是覆盖“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 ...
    # ...

...就是这样...现在按预期工作;-)

于 2013-03-25T21:00:36.627 回答
3

如果您没有传递任何参数或在__init__方法中包含任何您自己的代码,那么通常甚至不需要创建一个。您只需使用webapp2.RequestHandler'__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
于 2013-03-13T23:07:03.307 回答
0

您需要self在类中的所有函数中都有一个变量。您需要包含此变量才能使函数在您的类中工作。

self可以在此处找到对类中每个函数中需要变量的一个很好的解释。

于 2013-03-13T23:03:53.583 回答