【发布时间】:2020-09-08 06:16:00
【问题描述】:
我刚刚开始使用 Python 的数据类,我想确认我正在以正确的方式声明类变量。
使用常规 python 类
class Employee:
raise_amount = .05
def __init__(self, fname, lname, pay):
self.fname = fname
self.lname = lname
self.pay = pay
使用 python 数据类
@dataclass
class Employee:
fname: str
lname: str
pay: int
raise_amount = .05
我指的类变量是raise_amount。这是使用数据类正确声明的类变量吗?或者有更好的方法吗?
我已经测试了数据类实现,它提供了预期的功能,但我主要想知道我的实现是否遵循最佳实践。
【问题讨论】:
-
如果您不想从 exter 访问它,请在名称前添加两个下划线,例如:“__raise_amout”
-
“exter”是什么意思?我想要的是一个为 Employee 类的所有实例通用设置的变量。
-
对于一般类是,但对于数据类不是! dataclass 将创建有界属性
-
如果你声明了一个类属性并且你在任何方法中覆盖了它的值,那么这个属性将只对给定的实例有界。(如果你在那个实例上调用那个方法)
-
使用name mangling 模拟数据类中的类变量是一种完全错误的方法,接受的
typing.ClassVar要好得多。
标签: python python-3.x python-dataclasses