Closed liujuanjuan1984 closed 4 years ago
delattr(object, name) setattr() 相关的函数。实参是一个对象和一个字符串。该字符串必须是对象的某个属性。如果对象允许,该函数将删除指定的属性。例如 delattr(x, 'foobar') 等价于 del x.foobar 。
getattr(object, name[, default]) 返回对象命名属性的值。name 必须是字符串。如果该字符串是对象的属性之一,则返回该属性的值。例如, getattr(x, 'foobar') 等同于 x.foobar。如果指定的属性不存在,且提供了 default 值,则返回它,否则触发 AttributeError。
hasattr(object, name) 该实参是一个对象和一个字符串。如果字符串是对象的属性之一的名称,则返回 True,否则返回 False。(此功能是通过调用 getattr(object, name) 看是否有 AttributeError 异常来实现的。)
setattr(object, name, value) 此函数与 getattr() 两相对应。 其参数为一个对象、一个字符串和一个任意值。 字符串指定一个现有属性或者新增属性。 函数会将值赋给该属性,只要对象允许这种操作。 例如,setattr(x, 'foobar', 123) 等价于 x.foobar = 123。
1、刷题遇到知识盲区
今天继续在 xue.cn 刷题,发现知识盲点:getattr 与 setattr 未曾听闻。我有个通用解决办法,搜索:
getattr site:python.org
—— python官方文档,是自学python编程最好的资料。这个意识相当重要,我拥有这个意识,完全来自于《自学是门手艺》。暂时难住我的题目如下:
a = A(1,2,3) b = getattr(a, 'x') setattr(a, 'x', b+1) print(a.x)
所以,正确答案为 7 ~