python如何派生内置不可变类型并修改实例化行为


Posted in Python onMarch 21, 2018

本文实例为大家分享了python派生内置不可变类型并修改实例化行为的具体代码,供大家参考,具体内容如下

案例:

我们想要自定义新类型的元组,对传入的可迭代对象我们只保留其中的int类型并且值大于0的元素,如下:

[1, -2, 'xxx', 7, [1, 'oo'], 9]  >> (1, 7, 9)

如何实现?

1、自定义一个类,继承tuple类
2、重写__new__,类方法,new方法是对参数进行实例操作,在此之间,对实例参数进行预操作,修改实例化行为(new方法先于init方法)
3、重写new方法,把参数变成生成式,传回本类

#!/usr/bin/python3
 
 
class IntTuple(tuple):
  def __new__(cls, iterable):
    # new方法是init方法之前进行调用的方法
    # 生成一个生成式
    g = (x for x in iterable if isinstance(x, int) and x > 0)
     
    # cls为这个类本身,把参数g交给这个类本身
    return super(IntTuple, cls).__new__(cls, g)
 
  def __init__(self, iterable):
    pass
     
     
if __name__ == "__main__":
  l = [1, -2, 'xxx', 7, [1, 'oo'], 9]
   
  result = IntTuple(l)
  print(result)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
比较详细Python正则表达式操作指南(re使用)
Sep 06 Python
朴素贝叶斯算法的python实现方法
Nov 18 Python
python安装mysql-python简明笔记(ubuntu环境)
Jun 25 Python
python通过getopt模块如何获取执行的命令参数详解
Dec 29 Python
使用django的objects.filter()方法匹配多个关键字的方法
Jul 18 Python
python flask搭建web应用教程
Nov 19 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
Feb 28 Python
python实现超级马里奥
Mar 18 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
Jun 23 Python
python 实用工具状态机transitions
Nov 21 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
Feb 25 Python
常用的Python代码调试工具总结
Jun 23 Python
python如何通过实例方法名字调用方法
Mar 21 #Python
python如何为被装饰的函数保留元数据
Mar 21 #Python
15行Python代码带你轻松理解令牌桶算法
Mar 21 #Python
Python反转序列的方法实例分析
Mar 21 #Python
Python常见工厂函数用法示例
Mar 21 #Python
python如何统计序列中元素
Jul 31 #Python
python如何读写json数据
Mar 21 #Python
You might like
PHP与MySQL交互使用详解
2006/10/09 PHP
php桌面中心(二) 数据库写入
2007/03/11 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
2015/12/31 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
php获取服务器操作系统相关信息的方法
2016/10/08 PHP
jquery随意添加移除html的实现代码
2011/06/21 Javascript
JS Loading功能的简单实现
2013/11/29 Javascript
jQuery validate插件submitHandler提交导致死循环解决方法
2016/01/21 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
Angular之toDoList的实现代码示例
2017/12/02 Javascript
JQuery中queue方法用法示例
2019/01/31 jQuery
Node.js如何优雅的封装一个实用函数的npm包的方法
2019/04/29 Javascript
JS前端广告拦截实现原理解析
2020/02/17 Javascript
JavaScript实现打砖块游戏
2020/02/25 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
vue项目中播放rtmp视频文件流的方法
2020/09/17 Javascript
python之yield表达式学习
2014/09/02 Python
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
Python利用字典将两个通讯录文本合并为一个文本实例
2018/01/16 Python
python实现简易版计算器
2020/06/22 Python
Python定时任务sched模块用法示例
2018/07/16 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
Python IDLE或shell中切换路径的操作
2020/03/09 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
如何用Python徒手写线性回归
2021/01/25 Python
html5使用Canvas绘图的使用方法
2017/11/21 HTML / CSS
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
共产党员公开承诺书
2014/03/25 职场文书
2014年中秋寄语
2014/08/11 职场文书
公司行政主管岗位职责
2015/04/09 职场文书
2015年政教主任工作总结
2015/07/23 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript
python tqdm用法及实例详解
2021/06/16 Python
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫