您的位置:首页 > 编程语言 > Python开发

Python 辨异 —— __init__ 与 __new__

2016-12-08 10:28 375 查看
__init__ 更多的作用是初始化属性,__new__ 进行的是创建对象,显然 __new__ 要早于 __init__ 发生。

考虑一个继承自 tuple 的类,显然在 __init__ 无法对其成员进行修改;

class Edge(tuple):
def __new__(cls, e1, e2):
return tuple.__new__(cls, (e1, e2))
def __repr__(self):
return 'Edge (%s, %s)' % (repr(self[0]), repr(self[1]))
__str__ = __repr__


显然这里定义的类 Edge 可以用来抽象一些二元不可变的对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: