为什么这个类构造函数会引发此错误?

用户名

上这堂课:

class A(frozenset):
    def __init__(self, *args):
        frozenset.__init__(self, *args)

执行A(range(2))结果出现以下错误:

Traceback (most recent call last):
  File "<pyshell#65>", line 1, in <module>
    A(range(2))
  File "<pyshell#60>", line 3, in __init__
    frozenset.__init__(self, *args)
TypeError: object.__init__() takes no parameters

同时,frozenset(range(2))有效,并且如果我A从中继承setA(range(2))也有效。

如果我将A的构造函数0或多个参数传递给A,则它应能正常工作(参数为0时将创建一个空集,参数为2或多个时将引发TypeError: A expected at most 1 arguments, got 2)。

罗曼·佩列赫雷斯特

实际上在子类化时需要重写__new__方法(不是方法将接受由方法生成并返回的实例),以便从传递的iterable(作为参数)创建新的Frozenset__init____init____new__frozenset

class A(frozenset):
    def __new__(cls, *args):
        self = super().__new__(cls, *args)
        return self


print(A(range(2)))
print(A(range(2)).__class__.__bases__)

样本输出:

A({0, 1})
(<class 'frozenset'>,)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么这个简单的LISP函数会引发错误?

为什么在类构造函数中使用setState方法时,React会引发错误?

为什么在构造函数中调用这个函数会产生 stackoverflow 错误?

为什么这个 Python 代码会引发错误?

为什么此代码会引发IndexOutOfBounds错误?

为什么Set-Content会引发此错误?

为什么此汇编代码会引发段错误?

为什么不提交此表格会引发错误?

为什么Twitter API会引发此错误?

为什么此语句会引发打字稿错误?

为什么此代码会引发引用错误?

为什么我的构造函数在退出时会引发分段错误?

为什么这个简单的numpy乘法运算会引发“无效数量的参数”错误?

为什么这个生成器表达式会引发语法错误?

为什么不是“这个”。此构造函数中需要的命令?(java)

为什么在父类中调用了错误的构造函数?

为什么添加析构函数会更改此结构的复制构造函数行为?

为什么java.util.Objects私有构造函数会引发assertionError

为什么添加这个构造函数会导致我的 API 在 C# 中工作?

为什么这个集合返回此错误

为什么这个函数会循环?

为什么这个条件会导致错误?

为什么这个“else”会返回错误?

当我尝试向扩展另一个类的类添加新的构造函数时,为什么会有此错误消息?

为什么此函数会导致['h','-','-','-','-']?

为什么此代码会产生错误?

为什么 TextInputEditText 会产生此错误?

为什么JavaScript会显示此错误?

为什么此Theano.scan函数不会引发错误?