class Foo:def __init__(self,name,age):self.name = nameself.age = ageobj = Foo('alex',18)
如果想通过字符串操作对象中的成员,就如下所示的方式:
obj.name
b = 'name'
obj.b # obj.name
会报错:AttributeError: ‘Foo’ object has no attribute ‘b’
这时就可以依靠python中的反射来操作
# 通过字符串的形式操作对象中的成员
inp = input('>>>')
v = getattr(obj,inp) # 去什么里面获取什么内容
print(v)
out:
>>>name
alex
print(hasattr(obj,'name')) # 判断什么里面有没有什么
out:
True
setattr(obj,'k1','v1')
print(obj.k1)
setattr()函数对应函数getattr()函数,用于设置属性值。参数是对象、字符串和任意值。字符串可以命名现有属性或新属性。如果对象允许,函数将值赋给属性。例如,setattr(x,‘foobar’,123)等同于x.foobar=123。
out:
v1
delattr(obj,'name')
obj.name
delattr用来删除指定对象中的值
out:#报错
AttributeError: 'Foo' object has no attribute 'name'