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文档生成工具pydoc使用介绍
Jun 02 Python
python3使用PyMysql连接mysql数据库实例
Feb 07 Python
Python双向循环链表实现方法分析
Jul 30 Python
pycharm打开命令行或Terminal的方法
Jan 16 Python
Python基于plotly模块实现的画图操作示例
Jan 23 Python
Python 循环终止语句的三种方法小结
Jun 24 Python
python之信息加密题目详解
Jun 26 Python
python根据时间获取周数代码实例
Sep 30 Python
解决Python import docx出错DLL load failed的问题
Feb 13 Python
Pytorch中的自动求梯度机制和Variable类实例
Feb 29 Python
Python 的 __str__ 和 __repr__ 方法对比
Sep 02 Python
Python descriptor(描述符)的实现
Nov 15 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
一条久听不愿放下的DIY森海MX500,三言两语话神奇
2021/03/02 无线电
php url地址栏传中文乱码解决方法集合
2010/06/25 PHP
Javascript 事件流和事件绑定
2009/07/16 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
vue 将页面公用的头部组件化的方法
2017/12/18 Javascript
微信小程序三级联动选择器使用方法
2020/05/19 Javascript
nodejs初始化init的示例代码
2018/10/10 NodeJs
vue中通过使用$attrs实现组件之间的数据传递功能
2019/09/01 Javascript
layui表格分页 记录勾选的实例
2019/09/02 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
jQuery 移除事件的方法
2020/06/20 jQuery
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
Python常用列表数据结构小结
2014/08/06 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
django admin 自定义替换change页面模板的方法
2019/08/23 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
python爬虫用scrapy获取影片的实例分析
2020/11/23 Python
华丽的手绘陶瓷:MacKenzie-Childs
2017/02/04 全球购物
印度低票价航空公司:GoAir
2017/10/11 全球购物
Schutz鞋官方网站:Schutz Shoes
2017/12/13 全球购物
Smilodox官方运动服装店:从运动服到健身配件
2020/08/27 全球购物
销售代表求职自荐信
2013/10/01 职场文书
教育系毕业生中文求职信范文
2013/10/06 职场文书
机械电子工程毕业生自荐信
2013/11/23 职场文书
宿舍使用违章电器检讨书
2014/01/12 职场文书
《二泉映月》教学反思
2014/04/15 职场文书
小学生一分钟演讲稿
2014/08/26 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
收款委托书
2014/10/14 职场文书
三十年再续同学情倡议书
2019/11/27 职场文书
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang