如何访问数据类文档字符串和注释

How to access a dataclass docstring and comments

如何访问数据类文档字符串和注释:

例如对于以下数据类:

@dataclass
class MyDataClass:
    # an integer
    i: int  

    s: str # inline comment
    """ a string """

我想要一个API喜欢

>>> print(MyDataClass.DOC().i)
an integer

注意:一个相关的pythonenhancement request被拒绝了

向数据类定义添加一行

@dataclass
class MyDataClass:
    ...
    DOC = classmethod(get_dataclass_attributes_doc)

其中 get_dataclass_attributes_doc 在下面使用 simple_parsing.docstringMunch

实现
from simple_parsing.docstring import get_attribute_docstring, AttributeDocString
from typing import get_type_hints
from munch import Munch
from dataclasses import asdict

def get_dataclass_attributes_doc(some_dataclass):
    def get_attribute_unified_doc(some_dataclass, key):
        """ returns a string that chains the above-comment, inline-comment and docstring """
        all_docstrings: AttributeDocString = get_attribute_docstring(some_dataclass, key)
        doc_list = asdict(all_docstrings).values()
        return '\n'.join(doc_list)
 
    attribute_docs = Munch()
    for key in get_type_hints(some_dataclass).keys():
        attribute_docs[key] = get_attribute_unified_doc(some_dataclass, key)
    return attribute_docs