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 示例分享---逻辑推理编程解决八皇后
Jul 20 Python
python登录豆瓣并发帖的方法
Jul 08 Python
Python中time模块和datetime模块的用法示例
Feb 28 Python
Python 判断是否为质数或素数的实例
Oct 30 Python
Python内置函数 next的具体使用方法
Nov 24 Python
python @propert装饰器使用方法原理解析
Dec 25 Python
python 递归调用返回None的问题及解决方法
Mar 16 Python
Python字符串split及rsplit方法原理详解
Jun 29 Python
Python如何解除一个装饰器
Aug 07 Python
Django正则URL匹配实现流程解析
Nov 13 Python
浅谈Selenium+Webdriver 常用的元素定位方式
Jan 13 Python
Python绘制散乱的点构成的图的方法
Apr 21 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判断图片格式的七种方法小结
2013/06/03 PHP
php读取文件内容的几种方法详解
2013/06/26 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
php文件操作相关类实例
2015/06/18 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
2019/05/06 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
prototype 中文参数乱码解决方案
2009/11/09 Javascript
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
2012/02/27 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
js闭包实例汇总
2014/11/09 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
原生js实现焦点轮播图效果
2017/01/12 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
谈谈JS中的!!
2017/12/07 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
基于VSCode调试网页JavaScript代码过程详解
2020/07/20 Javascript
Python天气预报采集器实现代码(网页爬虫)
2012/10/07 Python
Python的语言类型(详解)
2017/06/24 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
2020/02/07 Python
使用python检查yaml配置文件是否符合要求
2020/04/09 Python
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
2018/05/28 HTML / CSS
雅虎笔试题(字符串操作)
2015/03/24 面试题
大学学年自我鉴定
2013/10/28 职场文书
助残日活动总结
2014/08/27 职场文书
自主招生学校推荐信
2014/09/26 职场文书
2015年“七七卢沟桥事变”纪念活动总结
2015/03/24 职场文书
贫民窟的百万富翁观后感
2015/06/09 职场文书
教师师德工作总结2015
2015/07/22 职场文书