通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射),下列方法适用于类和对象(一切皆对象,类本身也是一个对象)
- hasattr 根据字符串的形式去判断对象中是否含有成员
- getattr 根据字符串的形式去对象中找成员
- setattr 根据字符串的形式去动态设置对象成员
- delattr 根据字符串的形式去删除对象成员
class A:
    f = '类的静态变量'
    def __init__(self, name, age):
        self.name = name
        self.age = age
    def say(self):
        print('hi,{}'.format(self.name))
obj = A('zhangsan', 35)
# 检查是否含有某属性
print(hasattr(obj, 'name'))
print(hasattr(obj, 'say'))
# 获取某属性
print(getattr(obj, 'name'))
print(getattr(obj, 'f'))
a = getattr(obj, 'say')
a()
print(getattr(obj,'address','beijing')) # address不存在,如果没有设置默认值则报错
# 设置属性
setattr(obj, 'nickname', '法外狂徒')
setattr(obj, 'show_name', lambda self:self.name + self.nickname)
print(obj.__dict__)
print(obj.show_name(obj))
# 删除属性
delattr(obj, 'age')
delattr(obj, 'show_name')
delattr(obj, 'sex') # 不存在 报错
print(obj.__dict__)





 
 


Comments | NOTHING