在Python webapp2中如何在处理程序中放入__init__(用于GET和POST)
我该如何创建初始化代码?当我使用 __init__
构造函数时,总是提示我参数有问题。
另外,请有人给个例子,展示如何使用 __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 个回答
0
在你定义的类里的所有函数中,都需要有一个叫做 self
的变量。这个变量是必须的,只有这样函数才能在你的类里正常工作。
关于为什么每个类中的函数都需要这个 self
变量,有一个很好的解释可以在 这里 找到。
2
如果你在__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
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 ...
# ...
...就这样...
现在一切正常了;-)