Я работаю с модулем typing
в Python 3, чтобы посмотреть, как далеко я могу растянуть его для DSL. Чтобы использовать этот DSL, я бы хотел извлечь строки DocStrings некоторых пользовательских классов, таких как этот:
class MyRecord:
"""
This is just a foo.
Wouldn't it be cool if you could extract this DocString's text at runtime?
"""
foo: str
Я искал и нашел PEP 526 но это ничего не говорит мне об использовании DocStrings для этого случая. Единственная информация, которую я смог найти, - о том, как встроить информацию о типе в DocString, но это не то, что мне нужно.
FWIW, Python не жалуется при подаче этого примера выше. Однако он также, похоже, не заполняет атрибут __doc__
. Правильно ли я считаю, что в настоящее время это не является частью стандарта и поэтому не поддерживается?
Обновление: Я проделал ужасную работу, объясняя, чего я пытаюсь достичь. Я опубликовал ответ, содержащий гораздо лучший пример:
class MyRecord:
foo: str
"""
This is a foo.
"""
bar: str
"""
This is a bar.
"""
Как и следовало ожидать, в текущей спецификации нет доступа к этим данным. Единственное решение - разобрать AST и извлечь его оттуда, например, inspect.getsource()
.