Passing arguments during Class Initialization
我正在为下面代码中的内容挠头。
1 2 3 4 5 6 7 8 | class foo(object): def __init__(self,*args): print type(args) print args j_dict = {'rmaNumber':1111, 'caseNo':2222} print type(j_dict) p = foo(j_dict) |
它产生:
1 2 3 | <type 'dict'> <type 'tuple'> ({'rmaNumber': 1111, 'caseNo': 2222},) |
在我看来,这段代码将dict转换成tuple!!有人能解释一下吗?
实际上,这是因为
有关
当使用
我使用
(实际上,名称
例如:
1 2 3 4 5 | >>> def hello(* args): ... print"Type of args (gonna be tuple): %s, args: %s" % (type(args), args) ... >>> hello("foo","bar","baz") Type of args (gonna be tuple): <type 'tuple'>, args: ('foo', 'bar', 'baz') |
现在,如果你不"打包"那些参数就不会发生这种情况。
1 2 3 4 5 6 7 8 9 | >>> def hello(arg1, arg2, arg3): ... print"Type of arg1: %s, arg1: %s" % (type(arg1), arg1) ... print"Type of arg2: %s, arg2: %s" % (type(arg2), arg2) ... print"Type of arg3: %s, arg3: %s" % (type(arg3), arg3) ... >>> hello("foo","bar","baz") Type of arg1: <type 'str'>, arg1: foo Type of arg2: <type 'str'>, arg2: bar Type of arg3: <type 'str'>, arg3: baz |
您也可以参考这个问题:以星号和双星号开头的python方法/函数参数