2010-04-10 61 views
65

如何设置/获取由x给出的t属性的值。如何访问对象属性给定字符串对应于该属性的名称

class test(): 
    attr1 = int 
    attr2 = int 

t = test() 
x = "attr1" 
+2

重复:http://stackoverflow.com/questions/1887509/access-to-class-attributes-by-using-a-variable-in-python – 2010-04-10 11:40:37

+1

可能的复制[Python:从字符串访问类属性](http://stackoverflow.com/questions/1167398/python-access-class-property-from-string) – fejese 2016-05-13 16:07:57

回答

149

还有就是内置名为getattrsetattr

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

功能在这种情况下

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

删除属性也有delattr,但很少使用。 – 2010-04-10 07:33:31

+3

和hasattr用于测试对象是否具有特定的attr,尽管在这种情况下使用三个参数形式getattr(object,attrname,default)通常更好。 – Duncan 2010-04-10 11:20:18

+0

这绝对是优雅的方式! – larry 2016-08-18 19:51:19

5

有内置函数蟒蛇SETATTR和GETATTR。它可以用来设置和获取类的属性。

一个简单的例子:

>>> 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 
相关问题