反射:

  指的是通过字符串来操作对象属性的增删改除

 主要分为四种方法:

    hasattr :    查看字符串 是否 存在 返回---> Ture / False

    getattr:    获取对象属性的 并返回

    setattr : 对 对象属性值的 修改 (属性=值存在的情况下)或 添加 (属性=值不存在的情况下

    delattr    删除指定对象的(属性=值) ps: 没有找到则报错

如下例:

class Foo:
def __init__(self,name,age):
self.name=name
self.age=age def tell_info(self):
print('%s:%s' %(self.name,self.age)) obj=Foo('egon',18)
# 1、hasattr   查看属性的值是否存在
print(hasattr(obj,'name')) #obj.name
print(hasattr(obj,'tell_info')) #obj.tell_info 结果:
True
True
#2、getattr  获取属性的值
res=getattr(obj,'name') #res=obj.name
print(res)
res=getattr(obj,'xxx',None)
print(res) 结果:
egon
None
#3、setattr  对属性值进行 修改或添加
setattr(obj,'age',38)
setattr(obj,'sex','male')
print(obj.__dict__)
print(obj.sex) 结果:
{'name': 'egon', 'age': 38, 'sex': 'male'}
male
#4、delattr     删除属性的值‘xxxxe’
delattr(obj,'name')
if hasattr(obj,'xxxxe'):    #如果对象属性的值‘xxxxe’存在 则 删除。
delattr(obj,'xxxxe')
print(obj.__dict__) 结果:
{'age': 18}

最新文章

  1. NLog在Asp.Net MVC的实战应用
  2. grouping sets从属子句的运用
  3. sublime text3 使用SVN插件
  4. android textView 总是有paddingtop怎么解决
  5. Mysql手册—基本规范与数据类型
  6. Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题[转载]
  7. Android编程: MVC模式、应用的生命周期
  8. 网上图书商城项目学习笔记-012BOOK模块查询2
  9. clearTimeout(timeoutfunc) 是否有必要执行
  10. windows 查看端口被占用
  11. POJ 2777 线段树基础题
  12. 线程:Semaphore实现信号灯
  13. 腾讯IVWEB团队:WebRTC 点对点直播
  14. 10 - JavaSE之网络编程
  15. 【XAF问题】层层分级,如何让按钮显示指定的视图
  16. Android APP性能测试笔记(一)
  17. cmd与linux使用curl差异
  18. Python从入门到放弃系列(Django/Flask/爬虫)
  19. {}+[]与console.log({}+[])结果不同?从JavaScript的大括号谈起
  20. kafka集群压力测试--基础。

热门文章

  1. 在vue2.0中引用element-ui组件库
  2. Python_字符串初识及操作
  3. Jmeter之发送请求入参必须使用编码格式、Jmeter之发送Delete请求可能入参需要使用编码格式
  4. Android下的软件合集
  5. sys模块进度条玩法笔记
  6. React-Native windows环境搭建记录
  7. Bootstrap 面板(Panels)
  8. ArrayList性能短板深入分析
  9. 优化CSS重排重绘与浏览器性能
  10. k8s使用glusterfs做存储