python如何派生内置不可变类型并修改实例化行为
2018-03-21 11:25
603 查看
本文实例为大家分享了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 7-1 如何派生内置不可变类型(int,str,tuple,float)并修改实例化行为,继承内置tuple并实现__new__
- python-24-如何派生类内置不可变类型并修改其实例化行为?如何为创建大量实例节省内存?
- python核心编程-标准类派生-不可变类型
- python作用域的补充,局部引用全局作用域的修改尝试,可变类型内部可修改,内存指向不可变
- python之内置类型: 序列, 字典
- Python学习笔记——可变类型&不可变类型&深拷贝&浅拷贝
- Oracle 如何修改列的数据类型 (不积跬步,无以至千里)
- 内置类型string函数python2.7.11
- Python中内置数据类型list,tuple,dict,set的区别和用法
- Python实现扩展内置类型的方法分析
- Python基本内置数据类型有哪些?
- file类型的输入框,样式不可修改的解决方法
- 如何修改textfield的 return 键的类型
- python内置对象类型转换简记
- Python内置类型——list
- python 9-4 如何实现属性可修改的函数装饰器,python3 nolocal或者在python2中列表方式
- python3 内置核心数据类型
- Python所有的错误都是从BaseException类派生的,常见的错误类型和继承关系
- Python的可变类型与不可变类型