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使用Flask框架获取当前查询参数的方法
Mar 21 Python
python数据结构之图深度优先和广度优先实例详解
Jul 08 Python
深入理解python中的atexit模块
Mar 07 Python
Python 专题三 字符串的基础知识
Mar 19 Python
快速查询Python文档方法分享
Dec 27 Python
python中实现字符串翻转的方法
Jul 11 Python
用Python逐行分析文件方法
Jan 28 Python
分析运行中的 Python 进程详细解析
Jun 22 Python
python顺序执行多个py文件的方法
Jun 29 Python
python调用webservice接口的实现
Jul 12 Python
Python 矩阵转置的几种方法小结
Dec 02 Python
Python selenium的基本使用方法分析
Dec 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
世界上第一台立体声收音机
2021/03/01 无线电
深入理解PHP原理之异常机制
2010/08/21 PHP
php输入流php://input使用示例(php发送图片流到服务器)
2013/12/25 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
2015/01/07 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
PHP+JavaScript实现无刷新上传图片
2017/02/21 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
2019/10/03 PHP
asp 取文本框名称代码
2008/12/02 Javascript
jQuery对象与DOM对象之间的转换方法
2010/04/15 Javascript
Extjs优化(二)Form表单提交通用实现
2013/04/15 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
从零开始封装自己的自定义Vue组件
2018/10/09 Javascript
一文了解Vue中的nextTick
2019/05/06 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
python实现通过代理服务器访问远程url的方法
2015/04/29 Python
Python实现二叉搜索树
2016/02/03 Python
django使用xlwt导出excel文件实例代码
2018/02/06 Python
Python实现图片识别加翻译功能
2019/12/26 Python
Booking.com荷兰:全球酒店网上预订
2017/08/22 全球购物
中学生团员自我评价分享
2013/12/07 职场文书
校园报刊亭创业计划书
2014/01/02 职场文书
完整版商业计划书
2014/09/15 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
CSS几步实现赛博朋克2077风格视觉效果
2021/06/16 HTML / CSS
MySQL 使用索引扫描进行排序
2021/06/20 MySQL