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中的join()函数的用法
Apr 07 Python
Python通过正则表达式选取callback的方法
Jul 18 Python
浅谈终端直接执行py文件,不需要python命令
Jan 23 Python
深入理解Python中的内置常量
May 20 Python
Python 获取当前所在目录的方法详解
Aug 02 Python
pandas 获取季度,月度,年度首尾日期的方法
Apr 11 Python
Python装饰器用法实例分析
Jan 14 Python
Python类的继承、多态及获取对象信息操作详解
Feb 28 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
May 05 Python
Django框架反向解析操作详解
Nov 28 Python
python的Jenkins接口调用方式
May 12 Python
python打开音乐文件的实例方法
Jul 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
mysql建立外键
2006/11/25 PHP
php简单提示框alert封装函数
2010/08/08 PHP
PHPStorm+XDebug进行调试图文教程
2016/06/13 PHP
Laravel框架路由管理简单示例
2019/05/07 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
node.js中的console.trace方法使用说明
2014/12/09 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
JS实现获取当前URL和来源URL的方法
2016/08/24 Javascript
vue一步步实现alert功能
2017/07/05 Javascript
详解在vue-cli项目中使用mockjs(请求数据删除数据)
2017/10/23 Javascript
用最少的JS代码写出贪吃蛇游戏
2018/01/12 Javascript
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
[02:51]DOTA2战队出征照拍摄花絮 TI3明星化身时尚男模
2013/07/22 DOTA
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
Python的字典和列表的使用中一些需要注意的地方
2015/04/24 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
python K近邻算法的kd树实现
2018/09/06 Python
Python实现App自动签到领取积分功能
2018/09/29 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
2019/04/29 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
python实现马丁策略的实例详解
2021/01/15 Python
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
自我评价怎么写好呢?
2013/12/05 职场文书
2015年母亲节寄语
2015/03/23 职场文书
幼儿园中班教学反思
2016/03/03 职场文书
导游词之桂林山水
2019/09/20 职场文书
python 常用的异步框架汇总整理
2021/06/18 Python
Python中Selenium对Cookie的操作方法
2021/07/09 Python