如何派生内置不可变类型并修其改实例化行为

问题举例

自定义一种新类型的元组,对传入的可迭代对象,我们只保留

其中int类型且值大于0的元素,例如

IntTuple([1, -1, 'abc', 6, ['x', 'y'], 3])  => (1, 6, 3)

如何继承内置tuple实现IntTuple?

分析

对象的初始化有两个部分:__new__和__init__方法,

对于tuple而言,它并没有__init__方法,直接在__new__中初始化

解决思路

继承内置tuple,并实现__new__,在其中修改实例化行为

代码

class IntTuple(tuple):def __new__(cls, iterable):# 过滤iterablef_it = (e for e in iterable if isinstance(e, int) and e > 0)return super().__new__(cls, f_it)int_t = IntTuple([1, -1, 'abc', 6, ['x', 'y'], 3])
print(int_t)

参考资料:python3实用编程技巧进阶

转载于:https://www.cnblogs.com/marton/p/10777848.html

python类与对象-如何派生内置不可变类型并修其改实例化行为相关推荐

  1. Python类与对象

    2019独角兽企业重金招聘Python工程师标准>>> 1.如何派生内置不可变类型并修其改实例化行为 问题1: 我们想定义一种新类型的元组,对于传入的可迭代对象,我们只保留其中int ...

  2. Python 入门 —— Python 面向对象:类的创建及其基本内置方法的使用

    Python 面向对象:类的创建及其基本内置方法的使用 首先了解一下什么是面向对象 面向过程: 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. ...

  3. 一文讲全了Python 类和对象内容

    摘要:这是一个关于 Python 类和对象的全部内容. 本文分享自华为云社区<从零开始学python | Python 类和对象-面向对象编程>,原文作者:Yuchuan  . Pytho ...

  4. python类与对象作业_荐富贵和你一起复习Python(第10篇)— 面向对象程序设计

    继续复习Python,今日复习 -- 面向对象程序设计,中间会有自己的心得体会,要是有什么错误或者补充可直接评论或者私信哟. 面向对象程序设计 面向对象程序设计的思想主要针对大型软件设计提出,能够很好 ...

  5. python学习之最常用的内置函数

    python学习之最常用的内置函数 Python 内置函数总共有70余个(通常把内置类也统称为内置函数),覆盖面广,功能强大.不过,对于初学者在初级阶段,掌握下面几个函数是当务之急. (1) 控制台输 ...

  6. Python培训教程:Python有哪些比较重要的内置函数?

    学习Python技术或者参加Python工作的小伙伴们应该都知道,在Python编程语言中会经常出现很多内置函数,很少有人清楚这些函数,但是它的功能是不可小觑的,下面小编就为大家详细介绍一下Pytho ...

  7. Python类与对象实验

    一.任务描述   本实验任务主要对Python类与对象进行一些基本操作,通过完成本实验任务,要求学生熟练掌握Python类与对象的关系,并对Python类与对象的基本操作进行整理并填写工作任务报告. ...

  8. Python中10个常用的内置函数

    大家好,我是小张 在 3.8 版本中,Python 解释器共有近 69 个内置函数可供使用,有了它们能极大地提高编码效率, 数量虽然不少,但在日常搬砖中只用到其中一部分,根据使用频率和用法,列出来几个 ...

  9. python中对象的特性_python中类与对象之继承,python类和对象理解,面对对象的三大特性之...

    python中类与对象之继承,python类和对象理解,面对对象的三大特性之 面对对象的三大特性之继承 1.什么是继承? 在程序中,继承指的是class与class之间的关系 继承是一种关系,必须存在 ...

  10. python类包含对象的个数_python类与对象各个算数运算魔法方法总结

    1.python类与对象各个算术运算魔法方法总结: 2.各个魔法方法应用举例: 3.实例训练: (1)我们都知道在 Python 中,两个字符串相加会自动拼接字符串,但遗憾的是两个字符串相减却抛出异常 ...

最新文章

  1. 查询存储过程所需参数
  2. python入门练习题-Python简单新手入门练习题
  3. 基于若依框架的二次开发_浅谈若依框架
  4. mongodb性能分析方法:explain()
  5. 庄家如何用计算机下单,新人必看!庄家透露坐庄下单要诀
  6. hdu1501Zipper(记忆化搜索)
  7. 基于Huffman算法的文件解压缩
  8. 乘法运算-快速傅里叶变换
  9. IIS负载均衡-Application Request Route详解第五篇:使用ARR来配置试点项目
  10. 计算机c语言二级题型,计算机二级C语言题型和评分标准
  11. python知识图谱可视化_知识图谱可视化
  12. MAC下使用OpenSSL生成私钥和公钥
  13. 机器学习算法总结之朴素贝叶斯法
  14. React:网络工具库
  15. 无法听到计算机发出的声音怎么办,为什么视频对方听不到我说话_电脑视频对方听不到声音的解决方法...
  16. 古风排版 python
  17. English improvement of IT Test(2016)
  18. Python如何换pip的源(阿里云或清华云等源)
  19. 【LaTex 中英文样式加粗】自由选择中英文字体样式,中英文字体粗黑程度设置
  20. Jenkins - 札记 - 无法连接仓库:Command “git ls-remote -h -- http://git.govmade.cn/shanghai/demo.git HEAD“...

热门文章

  1. 计算机专硕超过270分人数,从18调剂看19备考策略(附76所院校19招生简章)
  2. python-gui-pyqt5的使用方法-6--lambda传递参数的方法:
  3. python-gui-pyqt5的使用方法-1
  4. CASE WHEN 及 SELECT CASE WHEN的用法
  5. python手机安装不了软件怎么办_安装python安装方法
  6. 每天二十分钟学习python_每天 3 分钟,小闫带你学 Python(二十五)
  7. php分销根据上级id获取上级姓名,无限级分销系统查自己上级、下级之多叉树实现关系速查...
  8. Python文件中,reload(sys)找不到的问题
  9. java实践_java基础实践
  10. java php mysql数据库_PHP脚本和JAVA连接mysql数据库