我有一个存储一些Qt控件的类,所以:
class Controls:
def __init__(self):
self.label = QLabel()
然后我可以做:
x = Controls()
x.label.setText("Hello")
这行得通。该类实际上有几十个控件,而不仅仅是我用于说明的控件,所以我想使用更简洁的 dataclass 表示法:
@dataclass(frozen=True, init=False)
class Controls:
label: QLabel
但是这样做后,我得到一个错误:
属性错误:"控件"对象没有属性"标签">
我尝试初始化字段(= QLabel()
(,我也尝试使用带有default
或default_factory
的field
,没有乐趣。
我想知道是否有人知道问题是什么?
你必须让构造函数被实现(删除init=False
(:
from dataclasses import dataclass, field
@dataclass(frozen=True)
class Controls:
label: QLabel = field(default_factory=QLabel)