Python 特殊方法

杀马特。学长 韩版系。学妹 提交于 2019-12-22 16:59:53

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

 1. __new__ 和 __init__

 object.__new__(cls[, ...])   

__new_()是在对象的实例化中被调用的第一个方法, 是一个静态方法,不需要显式地声明。它会将类作为第一个参数,其余参数传递给对象构造器表达式,返回值为新对象实例 。

示例:派生元祖类,定义一个元素仅为 int 类型的新元组。

#在 __new_()中对数据进行过滤

>>> class IntTuple(tuple):
	def __new__(cls,iterable):
		g = (i for i in iterable if isinstance(i,int))
		return super().__new__(cls,g)
	def __init__(self,iterable):
		super().__init__()


>>> l
[1, 2, 'gyf', 45]	
	
>>> a = IntTuple(l)
>>> a
(1, 2, 45)

7.2 如何为创建大量实例节省内存

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!