Python @dataclass Inheritance of Public 没有双重初始化的变量
Python @dataclass Inheritance of Public Variables without double initialization
想要在一个 class 中写入变量,然后在另一个 class 中继承这些设置的变量值,而无需再次设置这些值。
下面的代码应该打印 100,而不必为 subclass 实例再次初始化值;想使用 master class(数据处理程序)中的原始设置值。
一个class管理所有收入数据;数据处理程序,然后其他 classes 简单地继承这些值。处理这种流结构的方式是什么?请谢谢!!
from dataclasses import dataclass
@dataclass
class Datahandler:
A : int
B : int
C : int
D : int
E : int
F : int
Datahandler=Datahandler(100,100,50,40,10,1000)
class Some_Class(Datahandler):
pass
print(Some_Class.A)
要定义 class 的属性,请在 class 定义中分配给它,而不是在任何函数中。
class Datahandler:
staticmember = 200
dataclass
class 帮不了你。它用于定义 class 实例 的属性,而不是 classes.
然后您可以访问派生 class 中的基础 class 成员,这就是您想要做的。
class Some_Class(Datahandler):
pass
print(Some_Class.staticmember)
此外,您应该避免对 class 和 class 的实例使用相同的名称。
Datahandler=Datahandler(100,100,50,40,10,1000) #Likely problematic
编辑:虽然我回答了发布的问题,但有更简单的方法可以在不使用继承的情况下做同样的事情,正如@juanpa.arrivillaga所建议的那样。
想要在一个 class 中写入变量,然后在另一个 class 中继承这些设置的变量值,而无需再次设置这些值。
下面的代码应该打印 100,而不必为 subclass 实例再次初始化值;想使用 master class(数据处理程序)中的原始设置值。
一个class管理所有收入数据;数据处理程序,然后其他 classes 简单地继承这些值。处理这种流结构的方式是什么?请谢谢!!
from dataclasses import dataclass
@dataclass
class Datahandler:
A : int
B : int
C : int
D : int
E : int
F : int
Datahandler=Datahandler(100,100,50,40,10,1000)
class Some_Class(Datahandler):
pass
print(Some_Class.A)
要定义 class 的属性,请在 class 定义中分配给它,而不是在任何函数中。
class Datahandler:
staticmember = 200
dataclass
class 帮不了你。它用于定义 class 实例 的属性,而不是 classes.
然后您可以访问派生 class 中的基础 class 成员,这就是您想要做的。
class Some_Class(Datahandler):
pass
print(Some_Class.staticmember)
此外,您应该避免对 class 和 class 的实例使用相同的名称。
Datahandler=Datahandler(100,100,50,40,10,1000) #Likely problematic
编辑:虽然我回答了发布的问题,但有更简单的方法可以在不使用继承的情况下做同样的事情,正如@juanpa.arrivillaga所建议的那样。