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 相关文章推荐
django模型中的字段和model名显示为中文小技巧分享
Nov 18 Python
10种检测Python程序运行时间、CPU和内存占用的方法
Apr 01 Python
python搜索指定目录的方法
Apr 29 Python
python中私有函数调用方法解密
Apr 29 Python
python去掉空白行的多种实现代码
Mar 19 Python
windows下pycharm安装、创建文件、配置默认模板
Jul 31 Python
python try except 捕获所有异常的实例
Oct 18 Python
python实现网页自动签到功能
Jan 21 Python
python虚拟环境完美部署教程
Aug 06 Python
Python pandas库中的isnull()详解
Dec 26 Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 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
js实现iframe动态调整高度的代码
2008/01/06 Javascript
js变量以及其作用域详解
2020/07/18 Javascript
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
js中符号转意问题示例探讨
2013/08/19 Javascript
jQuery+ajax中getJSON() 用法实例
2014/12/22 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
2015/06/19 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
2015/08/31 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
2016/07/20 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
VUE 使用中踩过的坑
2018/02/08 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
详解vue2.0模拟后台json数据
2019/05/16 Javascript
微信小程序使用npm包的方法步骤
2019/08/13 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
2020/08/18 Javascript
解决pycharm界面不能显示中文的问题
2018/05/23 Python
python使用pygame框架实现推箱子游戏
2018/11/20 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
解决keras backend 越跑越慢问题
2020/06/18 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
webapp字号大小跟随系统字号大小缩放的示例代码
2018/12/26 HTML / CSS
正规的求职信范文分享
2013/12/11 职场文书
业务部主管岗位职责
2014/01/29 职场文书
2014年人事工作总结范文
2014/11/19 职场文书
大学生村官入党自传
2015/06/26 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
goland 恢复已更改文件的操作
2021/04/28 Golang