函数和__setattr__()魔术方法)
相关阅读Pythonhttps://blog.csdn.net/weixin_45791458/category_12403403.html?spm1001.2014.3001.5482setattr()是一个python内置的函数用于设置一个对象的属性值一般情况下可以通过点运算符(.)完成相同的功能但是getattr()拥有一个点运算符无法实现的功能就是允许使用字符串甚至字符串内容可以不是一个标识符)来表示属性名从而可以在运行时动态地选择要设置的属性这对于编写通用的代码或者处理动态数据结构很有用。下面是setattr()函数的函数头。setattr(object, name, value)其中参数object是要设置属性的对象参数name是一个字符串表示要获取属性的名称它可以接受变量作为实参参数value是要设置的值。下面是一个简单的例子展示了setattr()函数的特性。class MyClass: pass x MyClass() # 设置一个普通属性 setattr(x, foobar, 123) print(x.foobar) # 输出123 print(getattr(x, foobar)) # 输出123 # 设置一个非标识符属性 setattr(x, 123invalid, hello) print(getattr(x, 123invalid)) # 输出hello print(getattr(x.123invalid)) # 不能通过 x.123invalid 访问深入了解setattr()函数可以发现其是通过调用类的魔术方法__setattr__来设置属性的对于点运算符设置属性也是通过这种方式但是不建议直接使用__setattr__()来设置属性。class MyClass: pass x MyClass() # 直接使用 __setattr__ 方法设置属性 x.__setattr__(foo, 42) x.__setattr__(bar, 123) # 验证属性是否已设置 print(x.foo) # 输出42 print(x.bar) # 输出123