数据类default_factory的递归错误



在我的代码中,我使用dataclasses定义了一个类,它具有一些自定义类列表作为属性。用这个类导入文件会抛出一个ResursionError,将递归限制增加到100,000也无济于事。奇怪的是,这个错误没有在调试类定义时发生(我使用PyCharm)。当我将一些属性初始化为None时,没有发生此错误。现在我将dataclasses.field(default_factory=list)用于暗示为list[MyDataClass]的属性类型。报告的错误归结为:

File "/usr/lib/python3.10/dataclasses.py", line 1176, in wrap
return _process_class(cls, init, repr, eq, order, unsafe_hash,
File "/usr/lib/python3.10/dataclasses.py", line 1094, in _process_class
str(inspect.signature(cls)).replace(' -> None', ''))
File "/usr/lib/python3.10/inspect.py", line 3204, in __str__
formatted = str(param)
File "/usr/lib/python3.10/inspect.py", line 2721, in __str__
formatannotation(self._annotation))
File "/usr/lib/python3.10/inspect.py", line 1361, in formatannotation
return str(annotation)
File "/usr/lib/python3.10/dataclasses.py", line 283, in __repr__
return ('Field('
File "/usr/lib/python3.10/dataclasses.py", line 283, in __repr__
return ('Field('
File "/usr/lib/python3.10/dataclasses.py", line 283, in __repr__
return ('Field('
[Previous line repeated 985 more times]
RecursionError: maximum recursion depth exceeded

据我所知,我的类定义不允许循环引用,尽管MyDataClass有一个classfunction作为自定义构造函数。

没关系,这个错误是由与MyDataClass同名的属性引起的。我的错,但我想我还是会提交一个错误报告,如果它还没有被提出的话。

编辑:已经报道过了。

最新更新