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中list初始化方法示例
Sep 18 Python
tensorflow创建变量以及根据名称查找变量
Mar 10 Python
Python实现针对给定单链表删除指定节点的方法
Apr 12 Python
python实现QQ批量登录功能
Jun 19 Python
Python 循环终止语句的三种方法小结
Jun 24 Python
在Python3 numpy中mean和average的区别详解
Aug 24 Python
Python Web静态服务器非堵塞模式实现方法示例
Nov 21 Python
Python动态导入模块和反射机制详解
Feb 18 Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 Python
python爬取天气数据的实例详解
Nov 20 Python
selenium自动化测试入门实战
Dec 21 Python
Python 数据可视化之Bokeh详解
Nov 02 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项目中百度 UEditor 简单安装调试和调用
2015/07/15 PHP
(function($){...})(jQuery)的意思
2010/07/22 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
JS合并数组的几种方法及优劣比较
2014/09/19 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
深入理解$.each和$(selector).each
2016/05/15 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
JQuery遍历元素的后代和同胞实现方法
2016/09/18 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
Vue.js系列之项目搭建(1)
2017/01/03 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
jquery 时间戳转日期过程详解
2019/10/12 jQuery
JS操作JSON常用方法(10w阅读)
2020/12/06 Javascript
js基于canvas实现时钟组件
2021/02/07 Javascript
Python实现对象转换为xml的方法示例
2017/06/08 Python
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
python实现读取大文件并逐行写入另外一个文件
2018/04/19 Python
NumPy.npy与pandas DataFrame的实例讲解
2018/07/09 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
工程现场管理求职自荐信
2013/10/02 职场文书
文案策划求职信
2014/04/14 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
公司授权委托书范文
2014/08/02 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
加强作风建设演讲稿
2014/10/24 职场文书
信访工作个人总结
2015/03/03 职场文书
会计主管岗位职责
2015/04/02 职场文书
朋友聚会开场白
2015/06/01 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书
利用html+css实现菜单栏缓慢下拉效果的示例代码
2021/03/30 HTML / CSS
Win11任务栏太宽了怎么办?一招解决Win11任务栏太宽问题
2021/11/21 数码科技
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL