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实现一个简单的线程池
Apr 07 Python
python生成词云的实现方法(推荐)
Jun 13 Python
python的unittest测试类代码实例
Dec 07 Python
Python方法的延迟加载的示例代码
Dec 18 Python
全面分析Python的优点和缺点
Feb 07 Python
python list元素为tuple时的排序方法
Apr 18 Python
Python读写zip压缩文件的方法
Aug 29 Python
python使用PIL实现多张图片垂直合并
Jan 15 Python
python 将对象设置为可迭代的两种实现方法
Jan 21 Python
python实现最大优先队列
Aug 29 Python
Pytorch 保存模型生成图片方式
Jan 10 Python
解决reload(sys)后print失效的问题
Apr 25 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
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
2020/02/12 PHP
jQuery 加上最后自己的验证
2009/11/04 Javascript
jquery下checked取值问题的解决方法
2012/08/09 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
使用jquery实现仿百度自动补全特效
2015/07/23 Javascript
JS实现上下左右对称的九九乘法表
2016/02/22 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
小试小程序云开发(小结)
2019/06/06 Javascript
JS+CSS实现3D切割轮播图
2020/03/21 Javascript
javascript 设计模式之享元模式原理与应用详解
2020/04/08 Javascript
vue组件中节流函数的失效的原因和解决方法
2020/12/02 Vue.js
React服务端渲染原理解析与实践
2021/03/04 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
python with statement 进行文件操作指南
2014/08/22 Python
Django 内置权限扩展案例详解
2019/03/04 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
pycharm实现print输出保存到txt文件
2020/06/01 Python
基于python实现模拟数据结构模型
2020/06/12 Python
python 视频下载神器(you-get)的具体使用
2021/01/06 Python
美国在线鲜花速递:ProFlowers
2017/01/05 全球购物
英国花园家具中心:Garden Furniture Centre
2017/08/24 全球购物
日本食品网上商店:JaponShop.com
2017/11/28 全球购物
C#笔试题和英文面试题
2013/02/07 面试题
linux系统都有哪些运行级别
2016/03/26 面试题
工作中的自我评价如何写好
2013/10/28 职场文书
庆元旦文艺演出主持词
2014/03/27 职场文书
银行贷款承诺书
2014/03/29 职场文书
毕业大学生自荐信
2014/06/17 职场文书
四年级小学生评语
2014/12/26 职场文书
教师个人发展总结
2015/02/11 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书