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

不会了怎么办


class Person(object):

    def __init__(self, name, gender, birth, **kw):

        self.name = name

        self.gender = gender

        self.birth = birth

        for k, v in kw.iteritems():

            setatter(self, k, v)


xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student')


print xiaoming.name

print xiaoming.job



正在回答

3 回答

**kw: 参数按照关键字传值,多余的值都给KW,以字典的方式呈现

>>> def a(**kw):
	c=kw
	return c
>>> b=a(nianlin=18)
>>> print(b)
{'nianlin': 18}
>>>

items()

把字典的键与值以元素的形式列出来

a={'a':123}
for b,c in a.items():
    print('b:',b,'c:',c)
b: a c: 123


setattr() 函数

用于设置属性值,该属性不一定是存在的。

对已存在的属性进行赋值:

>>>class A(object):
...     bar = 1
... 
>>> a = A()
>>> getattr(a, 'bar')          # 获取属性 bar 值
1
>>> setattr(a, 'bar', 5)       # 设置属性 bar 值
>>> a.bar
5

如果属性不存在会创建一个新的对象属性,并对属性赋值:

>>>class A():
...     name = "runoob"
... 
>>> a = A()
>>> setattr(a, "age", 28)
>>> print(a.age)
28
>>>



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

setattr

0 回复 有任何疑惑可以回复我~
Traceback (most recent call last):
  File "index.py", line 9, in 
    xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student')
  File "index.py", line 7, in __init__
    setatter(self, k, v)
NameError: global name 'setatter' is not defined


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

举报

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

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

进入课程

不会了怎么办

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