【问题标题】:Python Dataclass - getting metadata from attribute namePython Dataclass - 从属性名称获取元数据
【发布时间】:2020-03-02 15:18:10
【问题描述】:

我有一个如下所示的数据类:

@dataclass
class Example:
    smtng: int = field(init=True, metadata={'int_name':"Thing",'ext_name':"it"})
    smtng_else: str = field(init=True, metadata={'int_name':"other",'ext_name':"that"})

如您所见,元数据字典有 externalinternal 名称字段 我想通过功能访问这些,例如get_ext_name(attribute_name) -> 将返回元数据字典“ext_name”下的属性名称

有没有一种简洁的方法来解决这个问题?

谢谢

【问题讨论】:

    标签: python-3.x attributes metadata python-dataclasses


    【解决方案1】:

    感谢 GeeksForGeeks 上的 vibhu4agarwal,我找到了这种方法。

    将此方法添加到类中有效:

    def ext_name(self, attribute_name):
        return self.__dataclass_fields__[attribute_name].metadata['ext_name'])
    

    如果有更好的解决方法,我很乐意看到它

    这里是文章的链接: https://www.geeksforgeeks.org/data-classes-in-python-set-3-dataclass-fields/

    【讨论】:

    • 数据类库有一个fields() 方法,它报告给定数据类或该数据类实例的所有字段。但是,它返回的是一个元组,而不是一个字典,因此通过字段名称查找需要遍历该元组,这很恶心。我认为你提供的这个解决方案是你能做到的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多