任意关键字参数
def __init__(self, name, gender, birth, **kw):
这里的参数可以换成*args吗?为什么。
def __init__(self, name, gender, birth, **kw):
这里的参数可以换成*args吗?为什么。
2018-07-05
不可以,因为**kw,kw这里是dict类型的,例如
class Person(object):
def __init__(self, name, gender, **kw):
self.name = name
self.gender = gender
for k,v in kw.items():
setattr(self,k,v)
p = Person('Bob', 'Male', age=18, course='Python')
这里kw就表示的是{age:18 , course:'Python'},需要有关键字和对应的值
换成*args,args是tuple类型的,如果定义一个函数def f(*args),那f函数的参数就可以有多个值,比如调用f(1,2,3,'a'),那args = (1,2,3,'a'),但不能像**kw那样可以添加类似于age和course这样的属性名
举报