题 如何访问对应于该属性名称的给定字符串的对象属性


你如何设置/获取属性的值 t 由...给出 x

class test():
   attr1 = int
   attr2 = int

t = test()
x = "attr1"

75
2018-04-10 07:22


起源




答案:


有内置函数调用 getattr 和 setattr

getattr(object, attrname)
setattr(object, attrname, value)

在这种情况下

x = getattr(t, "attr1")
setattr(t, 'attr1', 21)

167
2018-04-10 07:25



还有delattr用于删除属性,但这很少使用。 - Dave Kirby
和hasattr用于测试一个对象是否具有特定的attr虽然在这种情况下使用三个参数形式getattr(object,attrname,default)通常更好。 - Duncan
这绝对是优雅的方式! - larry


函数setattr和getattr中内置了python。哪个可以用来设置和获取类的属性。

一个简短的例子:

>>> from new import  classobj

>>> obj = classobj('Test', (object,), {'attr1': int, 'attr2': int}) # Just created a class

>>> setattr(obj, 'attr1', 10)

>>> setattr(obj, 'attr2', 20)

>>> getattr(obj, 'attr1')
10

>>> getattr(obj, 'attr2')
20

6
2018-04-10 07:34