如何访问数据类文档字符串和注释
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.docstring
和 Munch
实现
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
如何访问数据类文档字符串和注释:
例如对于以下数据类:
@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.docstring
和 Munch
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