反射
hasattr()函数用于判断对象是否包含对应的属性,返回布尔值,有的话返回True没有返回False
class Person(object): city = "beijing" def __init__(self, name): self.name = name def talk(self): print("{} are you ok".format(self.name)) p1 = Person("李大伟") print(hasattr(p1, "address")) # False print(hasattr(p1, "city")) # True
getattr()返回一个对象的属性值
获取对象的属性和方法,有则返属性,无则返回默认值,默认值可以自己设置
class Person(object): city = "beijing" def __init__(self, name): self.name = name def talk(self): print("{} are you ok".format(self.name)) p1 = Person("李大伟") print(getattr(p1, "name")) # 获取属性 print(getattr(p1, "talk")) # 获取方法的内存地址 print(getattr(p1, "speak", "无此属性")) # 没有此属性
setattr 给一个对象设置属性
delattr 给一个对象删除属性
class Person(object): city = "beijing" def __init__(self, name): self.name = name def talk(self): print("{} are you ok".format(self.name)) p1 = Person("李大伟") setattr(p1, "speak", "chinese") print(p1.__dict__) # {'name': '李大伟', 'speak': 'chinese'} delattr(p1, "name") print(p1.__dict__) # {'speak': 'chinese'}