反射 与 preprrty装饰器
2024-09-05 05:16:22
反射:
指的是通过字符串来操作对象属性的增删改除
主要分为四种方法:
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}
最新文章
- NLog在Asp.Net MVC的实战应用
- grouping sets从属子句的运用
- sublime text3 使用SVN插件
- android textView 总是有paddingtop怎么解决
- Mysql手册—基本规范与数据类型
- Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题[转载]
- Android编程: MVC模式、应用的生命周期
- 网上图书商城项目学习笔记-012BOOK模块查询2
- clearTimeout(timeoutfunc) 是否有必要执行
- windows 查看端口被占用
- POJ 2777 线段树基础题
- 线程:Semaphore实现信号灯
- 腾讯IVWEB团队:WebRTC 点对点直播
- 10 - JavaSE之网络编程
- 【XAF问题】层层分级,如何让按钮显示指定的视图
- Android APP性能测试笔记(一)
- cmd与linux使用curl差异
- Python从入门到放弃系列(Django/Flask/爬虫)
- {}+[]与console.log({}+[])结果不同?从JavaScript的大括号谈起
- kafka集群压力测试--基础。