为了账号安全,请及时绑定邮箱和手机立即绑定

__init__可以加上**kw参数,那可不可以*args参数呢?

如题,如果可以加上*args参数,可不可以举个例子怎么使用呢?需要像**kw一样使用某种函数吗?

正在回答

3 回答

#可以,*args代表非关键字可变参数的集合(元组),**kw代表关键字可变参数的集合(字典).

#一个不完善的例子

class student(object):
    def __init__(self,id,*args,**kw):
        for i in args:
            print i
        for j in kw:
            print kw[j]
student(1,2,3,name='pdk',sex='boy')
#本人水平低微,如有不妥敬请指正


0 回复 有任何疑惑可以回复我~
#1

MARSGGBO 提问者

非常感谢!
2015-10-11 回复 有任何疑惑可以回复我~

class Student(object):

    def __init__(self,aaa,bbb,*args,**kw):

        self.grade=aaa

        self.age=bbb

        for i in args:

            print i

        for j in kw:

            print kw[j]

p=Student('a','b',4,5,6,name='pdk',sex='boy')

print p.grade

print p.age

自己再删删改改就能懂了,你采纳的那个代码id没用到

0 回复 有任何疑惑可以回复我~

“11届西华牛饮客”回答得有点问题,以下是我找到的有关*args和**kwargs几个权威解释:
1、当函数的参数不确定时,可以使用*args和**kwargs。*args没有key值,**kwargs有key值
2、*args表示任何多个无名参数,它是一个list;**kwargs表示关键字参数,它是一个dict。并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前
参考链接:http://blog.csdn.net/chenjinyu_tang/article/details/8136841

那么*args和**kwargs之间就没有可替代性,代表的类型就不一样,目前涉及类的初始化定义中用到的**kwargs的有“4-4 初始化实例属性”和“5-6 获取对象信息”的编程任务题,各位可以找到相应课程查看

另外,说明一点*args和**kwargs的名称不是固定不变,实际格式的重点是前面的*,格式要求是*XXX和**XXX,只是因为习惯用法约定俗成的,如同实例方法用self和类方法用cls一样,测试下面两端代码你就能有一定理解了,对比代码如下:
【代码一】定义关键字参数为**kw

class Person(object):
    def __init__(self, name, gender, **kw):
        self.name = name
        self.gender = gender
        for k, v in kw.iteritems():
            setattr(self, k, v)

p = Person('Bob', 'Male', age=18, course='Python')
print p.age
print p.course

【代码二】定义关键字参数为**test

class Person(object):
    def __init__(self, name, gender, **test):
        self.name = name
        self.gender = gender
        for k, v in test.iteritems():
            setattr(self, k, v)

p = Person('Bob', 'Male', age=18, course='Python')
print p.age
print p.course

【运行结果】

18
Python

3 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

__init__可以加上**kw参数,那可不可以*args参数呢?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信