首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有@dataclass,dataclass语法做什么?

没有@dataclass,dataclass语法做什么?
EN

Stack Overflow用户
提问于 2022-10-07 14:18:41
回答 1查看 14关注 0票数 -1

使用@dataclass属性,可以使用类似于结构的语法定义类.

代码语言:javascript
复制
from dataclasses import dataclass

@dataclass
class A:
    a: int

这大致相当于(它实际上添加了更多的方法):

代码语言:javascript
复制
class A:
    def __init__(self, a: int):
        self.a = a

但是我发现没有@dataclass也可以做到这一点,但是它似乎并没有做任何事情:

代码语言:javascript
复制
class B:
    a: int
代码语言:javascript
复制
>>> B(1)
TypeError: B() takes no arguments
>>> B.a
AttributeError: type object 'B' has no attribute 'a'
EN

回答 1

Stack Overflow用户

发布于 2022-10-07 14:18:41

在抓挠我的头一段时间后,我有了一个eureka时刻:类型提示是用于类型(或任何其他类型检查器),而不是解释器。因此,这意味着如果在一个类型为B的对象中有一个属性B,那么它应该是一个int。指定一个可能永远不存在的变量的类型有点奇怪,但您确实存在。

按以下方式运行:

代码语言:javascript
复制
class B:
    a: int

b = B()
b.a = "s"

et voilàerror: Incompatible types in assignment (expression has type "str", variable has type "int")

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73988573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档