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中文件遍历的两种方法
Jun 16 Python
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
Aug 22 Python
Python中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 Python
Python中解析JSON并同时进行自定义编码处理实例
Feb 08 Python
Python的Flask开发框架简单上手笔记
Nov 16 Python
Python机器学习之K-Means聚类实现详解
Feb 22 Python
python中的json总结
Oct 11 Python
Python自动抢红包教程详解
Jun 11 Python
Python实现Selenium自动化Page模式
Jul 14 Python
Django实现基于类的分页功能
Oct 31 Python
Python 异步协程函数原理及实例详解
Nov 13 Python
pycharm无法导入lxml的解决办法
Mar 31 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把空格、换行符、中文逗号等替换成英文逗号的正则表达式
2014/05/04 PHP
Laravel 5.4前后台分离,通过不同的二级域名访问方法
2019/10/13 PHP
Javascript中Eval函数的使用说明
2008/10/11 Javascript
基于jQuery的为attr添加id title等效果的实现代码
2011/04/20 Javascript
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
Table冻结表头示例代码
2013/08/20 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
jQuery取id有.的值的方法
2014/05/21 Javascript
Egret引擎开发指南之创建项目
2014/09/03 Javascript
javascript实现带下拉子菜单的导航菜单效果
2015/05/14 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
JQuery validate插件验证用户注册信息
2016/05/11 Javascript
利用Angularjs和bootstrap实现购物车功能
2016/08/31 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
微信小程序之ES6与事项助手的功能实现
2016/11/30 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
[01:20:38]完美世界DOTA2联赛 GXR vs IO 第一场 11.07
2020/11/09 DOTA
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
Sublime开发python程序的示例代码
2018/01/24 Python
Django网络框架之创建虚拟开发环境操作示例
2019/06/06 Python
Python wordcloud库安装方法总结
2020/12/31 Python
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
文明礼仪演讲稿
2014/05/12 职场文书
内勤岗位职责范本
2015/04/13 职场文书
教师岗位说明书
2015/09/30 职场文书
高效课堂教学反思
2016/02/24 职场文书
Nginx 负载均衡是什么以及该如何配置
2021/03/31 Servers
解决Vue+SpringBoot+Shiro跨域问题
2021/06/09 Vue.js
React 并发功能体验(前端的并发模式)
2021/07/01 Javascript
剑指Offer之Java算法习题精讲二叉树专项训练
2022/03/21 Java/Android
Python OpenCV之常用滤波器使用详解
2022/04/07 Python
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技