反射

  反射: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__返回的输出格式

posted @ 2018-08-23 21:21  大张哥  阅读(95)  评论(0编辑  收藏  举报