【问题标题】:Why is dataclass is not working correctly?为什么数据类无法正常工作?
【发布时间】:2021-05-05 13:11:35
【问题描述】:

数据类功能不工作。例如,

from dataclasses import dataclass

@dataclass
class Person:
    name: str
    age: int

p = Person("Jonas", 27)
print(p)

当我尝试定义 p: 时出现错误消息:

TypeError: Person() takes no arguments

因此,数据类没有正确处理__init__ 函数。 dataclasses.py 文件位于 C:\Users\Jonas\Desktop\Tut_Dataclass\test_env\Lib\site-packages (1), 我还在那里找到了一个文件夹dataclasses-0.6.dist-info。 在命令提示符(在 VSCode 中)中键入 where python 会给出正确的位置 C:\Users\Jonas\Desktop\Tut_Dataclass\test_env\Scripts\python.exe。 检查sys.path显示 (1) 已列出,因此 python 应该找到模块数据类。 我检查了 numpy (通过 pip 安装),它工作正常。 作为 VSCode 和 python 的新手,我很感激任何解决这个问题的想法。

【问题讨论】:

  • 您的代码对我有用。你确定你用的是python3.7+?
  • 我得到输出:Person(name='Jonas', age=27)
  • 我正在使用 python 3.9.4
  • 我终于重新安装了 python 和 VSCode——它现在可以工作了。谢谢你帮助我。

标签: python module python-dataclasses


【解决方案1】:

如果重新启动/重新安装不起作用,则问题可能出在装饰器的顺序上。例如:

@dataclass_json
@dataclass
class Person:
    name: str
    age: int

有效。而:

@dataclass
@dataclass_json
class Person:
    name: str
    age: int

抛出TypeError: Person() takes no arguments

【讨论】:

  • OP 没有提到任何关于 3rd 方库的信息,例如 dataclass_json,所以这个答案很混乱。
猜你喜欢
  • 2011-07-24
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-03
  • 2021-09-29
相关资源
最近更新 更多