我正在使用webapp2,在浏览了它的源代码之后,我仍然无法理解*args
和{RequestHandler
对象的。在
我看到的代码示例如下(实际完整的代码源来自course builder,可以在here)中找到:
class ApplicationHandler(webapp2.RequestHandler):
def __init__(self, *args, **kwargs):
super(ApplicationHandler, self).__init__(*args, **kwargs)
有没有办法知道这些是从哪里来的,以及如何调试它们?在
*args
表示“所有位置参数”,而**kwargs
表示“所有关键字参数”。 它的魔力来自于小星星(*
和{*foo
和**bar
)。在*
和{print args
将打印位置参数的列表,而print kwargs
将显示关键字参数的字典。在在类似于您问题中的继承情况中,调用 基类,具有传递给子类构造函数的所有相同参数。在
ApplicationHandler
继承自webapp2.RequestHandler
和 在构造函数中,它使用super
调用超级类(基类) 关键字,将其所有参数传递给它。在让我们来研究这个例子:
print b.my_value
将显示HELLO
,因为参数传递给了B 构造函数已传递给__init__
中的A构造函数。 如果您在B.__init__
中添加print args
,您将看到("HELLO", )
。在相关问题 更多 >
编程相关推荐