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中的多线程实例教程
Aug 27 Python
Python中的super用法详解
May 28 Python
Python处理JSON数据并生成条形图
Aug 05 Python
Python+matplotlib+numpy绘制精美的条形统计图
Jan 02 Python
Python生成任意范围任意精度的随机数方法
Apr 09 Python
python使用matplotlib画饼状图
Sep 25 Python
PyQt5实现简单数据标注工具
Mar 18 Python
Python字符串对象实现原理详解
Jul 01 Python
selenium 多窗口切换的实现(windows)
Jan 18 Python
关于Kotlin中SAM转换的那些事
Sep 15 Python
Python为何不支持switch语句原理详解
Oct 21 Python
教你使用Sublime text3搭建Python开发环境及常用插件安装另分享Sublime text3最新激活注册码
Nov 12 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应用中使用XOR运算加密算法分享
2011/08/28 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
laravel请求参数校验方法
2019/10/10 PHP
JavaScript TO HTML 转换
2006/06/26 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
wap图片滚动特效无css3元素纯js脚本编写
2014/08/22 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
2014/11/17 Javascript
JavaScript处理解析JSON数据过程详解
2015/09/11 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
2016/11/21 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
Angularjs实现上传图片预览功能
2017/09/01 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
vue 集成jTopo 处理方法
2019/08/07 Javascript
JS pushlet XMLAdapter适配器用法案例解析
2020/10/16 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
Python中Django框架利用url来控制登录的方法
2015/07/25 Python
python3.7将代码打包成exe程序并添加图标的方法
2019/10/11 Python
python opencv角点检测连线功能的实现代码
2020/11/24 Python
用CSS3的box-reflect设置文字倒影效果的方法讲解
2016/03/07 HTML / CSS
广告设计专业自荐信范文
2013/11/14 职场文书
汽车维修专业个人求职信范文
2014/01/01 职场文书
单位领导证婚词
2014/01/14 职场文书
幼儿园开学寄语
2014/04/03 职场文书
六一儿童节开幕词
2015/01/29 职场文书
nginx lua 操作 mysql
2022/05/15 Servers