因为元组是不可变的,所以您必须重写
__new__:
python文档
object.__new__(cls[, ...])cls。__new__()是一个静态方法(特殊情况,因此您不必这样声明),它将实例被请求的类作为其第一个参数。其余参数是传递给对象构造函数表达式(对类的调用)的参数。的返回值__new__()应该是新的对象实例(通常是的实例cls)。典型的实现通过
__new__()使用super(currentclass, cls).__new__(cls[,...])带有适当参数的超类的方法来 创建类的新实例,然后在返回之前根据需要修改新创建的实例。如果
__new__()返回的实例cls,则新实例的__init__()方法将被调用__init__(self[,...]),其中self是新实例,其余参数与传递给的参数相同__new__()。如果
__new__()未返回的实例cls,则__init__()不会调用新实例的方法。__new__()主要是用来允许不可改变的类型的子类(例如int,str或tuple)来定制实例创建。为了自定义类的创建,通常也将其覆盖在自定义元类中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)