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记录程序运行时间的三种方法
Jul 14 Python
python用户管理系统的实例讲解
Dec 23 Python
Python 字符串与二进制串的相互转换示例
Jul 23 Python
int在python中的含义以及用法
Jun 27 Python
python selenium循环登陆网站的实现
Nov 04 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
Nov 07 Python
简单了解python元组tuple相关原理
Dec 02 Python
使用Python爬虫库requests发送表单数据和JSON数据
Jan 25 Python
详解Python中import机制
Sep 11 Python
python 删除系统中的文件(按时间,大小,扩展名)
Nov 19 Python
matplotlib更改窗口图标的方法示例
Feb 03 Python
python实现一个简单的贪吃蛇游戏附代码
Jun 28 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中Socket创建与监听实现方法
2015/01/05 PHP
php将数组转换成csv格式文件输出的方法
2015/03/14 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
Laravel 5.5 实现禁用用户注册示例
2019/10/24 PHP
JavaScript 继承详解(一)
2009/07/13 Javascript
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
javascript生成随机颜色示例代码
2014/05/05 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
Bootstrap导航条学习使用(一)
2017/02/08 Javascript
JavaScript中 this 指向问题深度解析
2017/02/21 Javascript
浅谈vue+webpack项目调试方法步骤
2017/09/11 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
Angular整合zTree的示例代码
2018/01/24 Javascript
JS运动特效之链式运动分析
2018/01/24 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
用python写扫雷游戏实例代码分享
2018/05/27 Python
解决Keras的自定义lambda层去reshape张量时model保存出错问题
2020/07/01 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
美国时尚在线:Showpo
2017/09/08 全球购物
abstract是什么意思
2012/02/12 面试题
行政人员工作职责
2013/12/05 职场文书
财务检查整改报告
2014/11/06 职场文书
主题班会开场白
2015/06/01 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
比赛口号霸气押韵
2015/12/24 职场文书
《草船借箭》教学反思
2016/02/23 职场文书