在webapp2和Python中实例化RequestHandler对象时,谁传递*args和**kwargs参数?
我正在使用webapp2,在浏览了它的源代码之后,我仍然不知道如何将在webapp2和Python中实例化RequestHandler对象时,谁传递*args和**kwargs参数?,python,webapp2,Python,Webapp2,我正在使用webapp2,在浏览了它的源代码之后,我仍然不知道如何将*args和**kwargs参数传递给RequestHandler对象 我看到的代码示例如下所示(实际完整的代码源代码来自course builder,可以找到): 有没有办法知道这些参数来自何处以及如何调试它们?*args表示“所有位置参数”,而**kwargs表示“所有关键字参数”。 它的魔力来自小星星(*和***),而不是名字(实际上, 它可以是任何名称,例如,使用*foo和 **bar) *和***可用于任何函数,而不仅
*args
和**kwargs
参数传递给RequestHandler
对象
我看到的代码示例如下所示(实际完整的代码源代码来自course builder,可以找到):
有没有办法知道这些参数来自何处以及如何调试它们?
*args
表示“所有位置参数”,而**kwargs
表示“所有关键字参数”。
它的魔力来自小星星(*
和***
),而不是名字(实际上,
它可以是任何名称,例如,使用*foo
和
**bar
)
*
和***
可用于任何函数,而不仅仅是构造函数。参数存储在变量中,并以星号命名;例如,print args
将打印位置参数的列表,而print kwargs
将显示关键字参数的字典
在您的问题中所提到的继承案例中,调用
具有传递给子类构造函数的所有相同参数的基类
ApplicationHandler
继承自webapp2.RequestHandler
和
在构造函数中,它使用super
关键字,将其所有参数传递给它
让我们研究一下这个例子:
class A:
def __init__(self, arg1):
self.my_value = arg1
class B(A):
def __init__(self, *args):
super(B, self).__init__(*args)
b = B("HELLO")
print b.my_value
将显示HELLO
,因为参数传递给了b
构造函数已在\uuuu init\uuuu
中传递给A构造函数。
如果你在
B.\uuu init\uuuu
中添加print args
,你会看到(“你好”,)
,可能重复的@OdraEncoded事实上我想知道的不是*args和**kwargs如何工作,而是谁实例化了一个对象并在webapp2 web应用程序中传递了这些参数。谢谢你的回答,但是谁来做这件事呢“b=b(“HELLO”)“web应用程序环境中的作业,特别是webapp2中的作业?我问得对吗?抱歉,我不理解您的问题…通常请求处理程序映射到URI,并在加载URI时实例化。”谁“我想,你的问题可能是WSGI应用程序。要调试传递给它的内容,只需从显示args和kwargs开始。。。
class A:
def __init__(self, arg1):
self.my_value = arg1
class B(A):
def __init__(self, *args):
super(B, self).__init__(*args)
b = B("HELLO")