Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在webapp2和Python中实例化RequestHandler对象时,谁传递*args和**kwargs参数?_Python_Webapp2 - Fatal编程技术网

在webapp2和Python中实例化RequestHandler对象时,谁传递*args和**kwargs参数?

在webapp2和Python中实例化RequestHandler对象时,谁传递*args和**kwargs参数?,python,webapp2,Python,Webapp2,我正在使用webapp2,在浏览了它的源代码之后,我仍然不知道如何将*args和**kwargs参数传递给RequestHandler对象 我看到的代码示例如下所示(实际完整的代码源代码来自course builder,可以找到): 有没有办法知道这些参数来自何处以及如何调试它们?*args表示“所有位置参数”,而**kwargs表示“所有关键字参数”。 它的魔力来自小星星(*和***),而不是名字(实际上, 它可以是任何名称,例如,使用*foo和 **bar) *和***可用于任何函数,而不仅

我正在使用webapp2,在浏览了它的源代码之后,我仍然不知道如何将
*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")