можно написать декоратор, который устанавливает __doc__
свойство:
def doc(docstr):
def deco(f):
f.__doc__ = docstr
return f
return deco
Это будет работать для функций и классов в старом стиле, но не для новых классов, так как атрибут __doc__
классов нового стиля доступен только для чтения (если вы не используете метаклассы, добавляя еще большую сложность для очень небольшого выигрыша).
В любом случае я бы рекомендовал не использовать такой декоратор. Просто придерживайтесь обычных конвенций. Таким образом, товарищи разработчики сразу поймет, что это строка документации, инструменты синтаксического анализа исходного кода строки документации будет работать правильно и т.д.
Edit: Чтобы охватывать классы нового стиля, вы могли бы использовать эту реализацию:
def doc(docstr):
def deco(f):
if isinstance(f, type):
d = vars(f).copy()
d["__doc__"] = docstr
return type(f.__name__, f.__bases__, d)
f.__doc__ = docstr
return f
return deco
С __doc__
доступен только для чтения, нам необходимо создать объект нового типа с требуемой документацией. Для простоты я не рассматриваю пользовательские метаклассы (если вы хотите, замените type
на f.__class__
в приведенном выше коде).
Опять же, я не рекомендую использовать этот декоратор.
Правильно: используйте '#' ;-) – Tim
Допустимый ответ, если есть инструмент для правильного извлечения документации. :) –
Вы будете делать себе одолжение, чтобы работать с зерном Python и не бороться с его дизайном. Просто скажите ;-) –