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中使用cookielib和urllib2配合PyQuery抓取网页信息
Apr 25 Python
Python内建数据结构详解
Feb 03 Python
TensorFlow安装及jupyter notebook配置方法
Sep 08 Python
用python的requests第三方模块抓取王者荣耀所有英雄的皮肤实例
Dec 14 Python
python删除不需要的python文件方法
Apr 24 Python
判断python字典中key是否存在的两种方法
Aug 10 Python
django数据关系一对多、多对多模型、自关联的建立
Jul 24 Python
Python学习笔记之Zip和Enumerate用法实例分析
Aug 14 Python
Python 实现自动完成A4标签排版打印功能
Apr 09 Python
VSCode配合pipenv搞定虚拟环境的实现方法
May 17 Python
Python如何爬取b站热门视频并导入Excel
Aug 10 Python
python自动获取微信公众号最新文章的实现代码
Jul 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
短波收音机简介
2021/03/01 无线电
咖啡语言
2021/03/03 咖啡文化
图书管理程序(一)
2006/10/09 PHP
PHP 无限分类三种方式 非函数的递归调用!
2011/08/26 PHP
php添加数据到xml文件的简单例子
2016/09/08 PHP
PHP基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
jquery设置控件位置的方法
2013/08/21 Javascript
常用的Javascript设计模式小结
2015/12/09 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
JS使用setInterval实现的简单计时器功能示例
2018/04/19 Javascript
vue中前进刷新、后退缓存用户浏览数据和浏览位置的实例讲解
2018/09/21 Javascript
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
详解ES6数组方法find()、findIndex()的总结
2020/05/12 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
[01:21:36]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python编程之序列操作实例详解
2017/07/22 Python
python中itertools模块zip_longest函数详解
2018/06/12 Python
pandas 将索引值相加的方法
2018/11/15 Python
浅谈Pycharm中的Python Console与Terminal
2019/01/17 Python
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
使用Python将Mysql的查询数据导出到文件的方法
2019/02/25 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
详解python的super()的作用和原理
2020/10/29 Python
制药工程专业应届生求职信
2013/09/24 职场文书
农民工工资发放承诺书
2014/03/31 职场文书
《观舞记》教学反思
2014/04/16 职场文书
企业文化口号
2014/06/12 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
员工离职通知函
2015/04/25 职场文书
mysql 8.0.24版本安装配置方法图文教程
2021/05/12 MySQL