面向对象---高级
来源:互联网 发布:已备案域名怎么购买呢 编辑:程序博客网 时间:2024/06/04 19:44
反射
反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力(自省)。
python面向对象中的反射:通过字符串的形式操作对象相关的属性。python中的一切事物都是对象(都可以使用反射)
四个可以实现自省的函数
hasattr(object,name) 判断对象或类有没有这个属性
getattr(object, name, default=None)如果有就取出值,没有就报错或打印第三个参数
setattr(x, y, v)给对象增加属性
delattr(x, y)删除属性
# class P:# s=1# name='sd'## print(getattr(P,'c','行'))#行# print(hasattr(P,'c'))#False# setattr(P,'c',3)#P.c=3# print(P.c)#3# delattr(P,'c')# print(getattr(P,'c','不行'))#不行# t=P()# setattr(t,'sfd','dfgr')#t.sfd=dfgr# print(getattr(t,'sfd'))#dfgr# print(hasattr(t,'w'))#False# print(t.__dict__)#{'sfd': 'dfgr'}# delattr(t,'name')#AttributeError: name
========================================================================
重写内置函数
class F: def __init__(self,x): self.x=x def __del__(self): print('删除了') def __str__(self): return '我是{}'.format(self.x) def __getitem__(self, item): return getattr(self,item) def __setitem__(self, key, value): return setattr(self,key,value)f=F('X')print(f)#我是Xprint(f['x'])#Xf['s']=2print(f.__dict__)#{'x': 'X', 's': 2}
#删除了 #运行结束自动删除对象
http://www.cnblogs.com/linhaifeng/articles/6204014.html#_label2
阅读全文
0 0
- 面向对象高级(一)
- 面向对象高级(二)
- 面向对象高级(三)
- 面向对象高级
- Java面向对象高级
- 面向对象高级
- 面向对象高级
- 面向对象高级编程
- 面向对象高级编程
- 面向对象(高级)
- 面向对象高级
- javascript高级面向对象
- Javascript 高级面向对象
- JavaScript高级面向对象
- javascript 高级面向对象
- JavaScript面向对象高级
- 面向对象(高级)
- 面向对象高级特性
- Spring横切面(advice),增强(advisor),切入点(PointCut)
- 怎样用grep匹配多个字符串? grep -E 'aaaaa|bbbbbb'
- mycat配置文件详解 安装指南
- CodeForces 652F. Ants on a Circle
- qt信号槽深度剖析
- 面向对象---高级
- 【6】 正则表达式应用——实例应用
- python 链接mongo数据库说明
- web攻击
- Error:Execution failed for task ':app:mergeDebugResources'. > Error: java.lang.RuntimeException: Cru
- acquia dev desktop开发第三天
- 准备开始测试之路
- springboot(一):入门篇
- sql语句汇总