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获取DLL和EXE文件版本号的方法
Mar 10 Python
使用 Python 实现微信群友统计器的思路详解
Sep 26 Python
使用Django2快速开发Web项目的详细步骤
Jan 06 Python
python django框架中使用FastDFS分布式文件系统的安装方法
Jun 10 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
如何使用python3获取当前路径及os.path.dirname的使用
Dec 13 Python
Keras之自定义损失(loss)函数用法说明
Jun 10 Python
Python Mock模块原理及使用方法详解
Jul 07 Python
Python编写单元测试代码实例
Sep 10 Python
Python接口自动化测试框架运行原理及流程
Nov 30 Python
如何使用flask将模型部署为服务
May 13 Python
总结三种用 Python 作为小程序后端的方式
May 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
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
精美漂亮的php分页类代码
2013/04/02 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
2014/08/11 PHP
js 判断 enter 事件
2009/02/12 Javascript
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
jquery mobile changepage的三种传参方法介绍
2013/09/13 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
form表单转Json提交的方法(推荐)
2016/09/23 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
老生常谈angularjs中的$state.go
2017/04/24 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
vue中axios请求的封装实例代码
2019/03/23 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
Python实例之wxpython中Frame使用方法
2014/06/09 Python
Python中内置的日志模块logging用法详解
2016/07/12 Python
python 2.6.6升级到python 2.7.x版本的方法
2016/10/09 Python
python MysqlDb模块安装及其使用详解
2018/02/23 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
python保存网页图片到本地的方法
2018/07/24 Python
Python3.5内置模块之time与datetime模块用法实例分析
2019/04/27 Python
python实现邮件自动发送
2019/08/10 Python
Python netmiko模块的使用
2020/02/14 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
英国玛莎百货澳大利亚:Marks & Spencer Australia
2019/08/30 全球购物
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
单位接收证明格式
2015/06/18 职场文书
2016年“11.11”光棍节活动总结
2016/04/05 职场文书
Java org.w3c.dom.Document 类方法引用报错
2021/08/07 Java/Android
「魔法少女伊莉雅」美游粘土人开订
2022/03/21 日漫
Python 装饰器(decorator)常用的创建方式及解析
2022/04/24 Python
DQL数据查询语句使用示例
2022/12/24 MySQL