反射
反射:hasattr , getattr , setattr , delattr
hasattr判断实例化的对象里面是否有这个值
class Peopel:
def __init__(self,name,age):
self.name=name
self.age=age
obj=Peopel('las',12)
print(obj.__dict__)
print(hasattr(obj,'name'))
返回的是 True 或者False
getattr 获取实例化后指定键的值
print(getattr(obj,'name'))
print(getattr(obj,'xxx',None))
后面多加了一个none 如果没找到就返回 none
setattr 修改添加。
setattr(obj,'name','LLL')
将对应的name 键的值改成LLL
setattr(obj,'xxx',11111)
没有找到xxx这个键 就增加 ‘xxx’:11111
delattr 删除
delattr(obj,'name')
删除 ‘name’对应的键值
__str__ 在对象被打印时自动触发,可以用来定义对象被打印时的输出信息,必须返回一个字符串类型的值
class People :
def __init__(self,name,age):
self.name=name
self.age=age
def __str__(self):
return '%s:%s' %(self.name,self.age)
obj1=People('asd',11)
print(obj1)
打印的是 asd:11 正是__str__返回的输出格式