包装

1.二次加工标准类型(包装)

class List(list):
def append(self, a_objcet):
if type(a_objcet) is str:
super().append(a_objcet)
else:
print('请传入字符转类型') l1 = List('hello') l1.append(123)
l1.append('world')
print(l1)

运行结果:

请传入字符转类型
['h', 'e', 'l', 'l', 'o', 'world'] Process finished with exit code 0

2.授权

授权是包装的一个特性。授权的过程是所有更新的功能都是由新类的某部分来处理,但已存在的功能授权给对象的默认属性。

授权的关键就在于__getattr__方法。

# 创建一个open方法
class Open:
def __init__(self,filname,mode='r',encoding='utf-8'):
self.fil = open(filname,mode,encoding=encoding)
self.mode = mode
self.encoding = encoding def __getattr__(self, item):
print('-------->',item,type(item))
return getattr(self.fil,item) f1 = Open('a.txt','w')
print(f1.fil) print(f1.read) # 触发__getattr__

运行结果:

<_io.TextIOWrapper name='a.txt' mode='w' encoding='utf-8'>
--------> read <class 'str'>
<built-in method read of _io.TextIOWrapper object at 0x7f718a0007e0> Process finished with exit code 0

最新文章

  1. appdata
  2. EntityFrame CodeFirst 自动生成表
  3. 慕课网__css3__3D
  4. iterm2配色
  5. lucene-查询query-&gt;BooleanQuery “与或”搜索
  6. 2016年4月1日下午,《java入门123》翻开了第一页,从此走上不归路。新手初来乍到,献上见面礼
  7. SharePoint 2013 Nintex Workflow 工作流帮助(七)
  8. Access数据库一种树形结构的实现和子节点查询
  9. 函数buf_LRU_block_remove_hashed_page
  10. uploadify上传控件中文的乱码解决办法
  11. cf B. Fixed Points
  12. Robot Framework中DatabaseLibrary应用
  13. 用C语言打印出三角函数
  14. express respond.send 和 end的区别
  15. Python 精进版SVIP版通过队列实现一个生产者消费者模型
  16. rpm包安装的nginx热升级
  17. SwingBench 字符模式压测最佳实践
  18. 【Maven】从Maven中导出项目依赖的Jar包
  19. C#集成FastDFS断点续传
  20. 大佬带你深入浅出Lua虚拟机

热门文章

  1. JavaScript基础02-条件语句及介绍函数
  2. 文字环绕和两栏自适应以及区域滚动插件iscroll.js
  3. JMeter学习2
  4. Intellij IDEA 自动清除无效 import 和 清除无效 import 的快捷键
  5. [代码质量] Git统计本次提交新增代码行数,建议每个评审commit新增行数小于400行
  6. 使用MSCK命令修复Hive表分区
  7. MySQL实现按天分组统计,提供完整日期列表,无数据自动补0
  8. Qt请求http地址数据
  9. QT中常用工具总结
  10. [译]如何根据Pandas中的列名获取列所在的index位置?