Python 数据类:动态创建 属性

Python dataclass: create property dynamically

我有一个数据class,我想在评估另一个 属性 device_name 之后动态创建 属性 device_group。我目前正在使用 @属性 装饰器进行操作,如果我使用 instance.device_group .

访问它,它就会工作
@dataclass
class Device:
    device_name: str
    uplinks: list
    @property
    def device_group(self) -> str:
        # do something here with self.device_name
        return device_group 

但是 class 实例不会有此 属性 除非您尝试使用 instance.device_group

访问它
  "unknown_device": {
    "device_name": "unknown_device",
    "uplinks": [
      {

实例是否可以在创建后立即动态生成 device_group? 或者我最好在其他地方调用 device_group() 然后将结果显式分配给 device_group 属性?

你可以使用 post init processing:

from dataclasses import dataclass, field

@dataclass
class Device:
    device_name: str
    uplinks: list
    device_group = field(init=False)

    def __post_init__(self):
        self.device_group = self.device_name + "_group"