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 12 Python
Python两个内置函数 locals 和globals(学习笔记)
Aug 28 Python
python3 实现对图片进行局部切割的方法
Dec 05 Python
Python numpy中矩阵的基本用法汇总
Feb 12 Python
python字符串和常用数据结构知识总结
May 21 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
Sep 20 Python
Python命令行参数解析工具 docopt 安装和应用过程详解
Sep 26 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
Dec 17 Python
python matplotlib中的subplot函数使用详解
Jan 19 Python
python实现字符串和数字拼接
Mar 02 Python
通过代码实例解析Pytest运行流程
Aug 20 Python
Python中Permission denied的解决方案
Apr 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开发中常用的8个小技巧
2008/08/27 PHP
php 各种应用乱码问题的解决方法
2010/05/09 PHP
php的一个简单加密解密代码
2014/01/14 PHP
PHP开发微信支付的代码分享
2014/05/25 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
Node.js中使用Buffer编码、解码二进制数据详解
2014/08/16 Javascript
JavaScript实现简单的二级导航菜单实例
2015/04/15 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
学习JavaScript事件流和事件处理程序
2016/01/25 Javascript
JavaScript事件代理和委托详解
2016/04/08 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
浅述节点的创建及常见功能的实现
2016/12/15 Javascript
详解jQuery选择器
2016/12/21 Javascript
浅谈js算法和流程控制
2016/12/29 Javascript
浅谈vue-router2路由参数注意的问题
2017/11/08 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
浅谈vue中$bus的使用和涉及到的问题
2020/07/28 Javascript
Python中的引用和拷贝浅析
2014/11/22 Python
Tensorflow中的placeholder和feed_dict的使用
2018/07/09 Python
python3.7简单的爬虫实例详解
2019/07/08 Python
详解python itertools功能
2020/02/07 Python
python3 实现口罩抽签的功能
2020/03/11 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
中国好声音华少广告词
2014/03/17 职场文书
总结表彰大会主持词
2014/03/26 职场文书
篮球赛口号
2014/06/18 职场文书
博士生专家推荐信
2014/09/26 职场文书
信用卡收入证明范本
2015/06/12 职场文书
入党申请书怎么写?
2019/06/11 职场文书
SQLServer 日期函数大全(小结)
2021/04/08 SQL Server
JavaScript阻止事件冒泡的方法
2021/12/06 Javascript
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记