s.name就可以给出对象s的name属性了,为啥还要用getattr(s,name)这么麻烦的方法?

来源:3-5 Python获取对象信息

葡萄葡萄

2020-10-05 12:52

>>> getattr(p, 'name') # 获取name属性
'Alice'
>>> setattr(p, 'name', 'Adam') # 设置新的name属性
>>> s.name
'Adam'


既然s.name就可以给出对象s的name属性了,为啥还要用getattr(s,name)这么麻烦的方法?

(就要多打很多字,还要特意记住这个方法)

写回答 关注

4回答

  • 慕无忌7352881
    2022-02-19 17:33:21

    比如'name'等均是字符串输入而不是参数原类型,有些场景不一定知道有什么参数

  • 不做实力派的型男不改昵称
    2021-01-17 19:06:44

    可以根据字符串来取值,在动态增删属性上非常有用

  • 新大宏
    2020-10-27 15:36:29

    用于循环取值用,方便快捷

    新大宏

    如下代码: 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) for k, v in kw.items(): print(getattr(self,k,v))

    2020-10-27 15:39:49

    共 1 条回复 >

  • 新大宏
    2020-10-27 15:20:58

    表示关注


Python3 进阶教程(新版)

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

41910 学习 · 236 问题

查看课程

相似问题