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脚本批量下载DesktopNexus壁纸的教程
May 06 Python
浅析Python的web.py框架中url的设定方法
Jul 11 Python
浅析Python中MySQLdb的事务处理功能
Sep 21 Python
Python入门之后再看点什么好?
Mar 05 Python
对python .txt文件读取及数据处理方法总结
Apr 23 Python
python批量修改文件夹及其子文件夹下的文件内容
Mar 15 Python
Python Flask框架扩展操作示例
May 03 Python
python智联招聘爬虫并导入到excel代码实例
Sep 09 Python
Django对接支付宝实现支付宝充值金币功能示例
Dec 17 Python
python实现名片管理器的示例代码
Dec 17 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
Mar 09 Python
python操作xlsx格式文件并读取
Jun 02 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基础学习小结
2011/04/17 PHP
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
2013/04/08 PHP
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
PHP实现小程序批量通知推送
2018/11/27 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
jQuery textarea的长度进行验证
2009/05/06 Javascript
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
2009/07/06 Javascript
JavaScript 的继承
2011/10/01 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
关于Jquery操作Cookie取值错误的解决方法
2013/08/26 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
jquery实现简单手风琴菜单效果实例
2015/06/13 Javascript
详解vue表单验证组件 v-verify-plugin
2017/04/19 Javascript
几种响应式文字详解
2017/05/19 Javascript
JS弹窗 JS弹出DIV并使整个页面背景变暗功能的实现代码
2018/04/21 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
详解vue 兼容IE报错解决方案
2018/12/29 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
JavaScript对象属性操作实例解析
2020/02/04 Javascript
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
基于python 字符编码的理解
2017/09/02 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
Jupyter notebook设置背景主题,字体大小及自动补全代码的操作
2020/04/13 Python
Python爬虫抓取论坛关键字过程解析
2020/10/19 Python
举例讲解Python装饰器
2020/12/24 Python
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
美国渔具店:FishUSA
2019/08/07 全球购物
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
新加坡鲜花速递/新加坡网上花店:Ferns N Petals
2020/08/29 全球购物
房地产广告词大全
2014/03/19 职场文书
个人担保书范文
2014/05/20 职场文书
机械系毕业生求职信
2014/05/28 职场文书
Python语法学习之进程的创建与常用方法详解
2022/04/08 Python