python如何派生内置不可变类型并修改实例化行为
2018-03-21 11:25
387 查看
本文实例为大家分享了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 7-1 如何派生内置不可变类型(int,str,tuple,float)并修改实例化行为,继承内置tuple并实现__new__
- python_如何派生内置不可变类型并修改实例化行为
- python如何派生内置不可变类型并修改实例化行为
- python-24-如何派生类内置不可变类型并修改其实例化行为?如何为创建大量实例节省内存?
- python高级(如何派生内置不可变类型并修改其实例化行为)
- python核心编程-标准类派生-不可变类型
- python作用域的补充,局部引用全局作用域的修改尝试,可变类型内部可修改,内存指向不可变
- [Python]Python/PHP如何查询sql server中NTEXT类型数据
- python内置类型
- Python基础学习----数据类型,字符串,内置数据结构
- 在安装android studio时如何修改properties类型文件
- python 中如何使用 C 类型的数组? ctypes 的用法
- Oracle 如何修改列的数据类型
- python基础-内置数据类型
- Linux文件类型及如何查看,修改文件读写权限
- python中不可变数据类型和可变数据类型
- c#如何扩展类型的内置方法
- [每天解决一问题系列 - 0013] 如何修改WiX Burn内置的窗口
- Python中如何修改字符串的值
- Python内置数据类型