Явно задано строкой документации метода
Я помогаю поддерживать пакет для python под названием nxt-python. Он использует метаклассы для определения методов объекта управления. Вот метод, который определяет доступные функции:
class _Meta(type):
'Metaclass which adds one method for each telegram opcode'
def __init__(cls, name, bases, dict):
super(_Meta, cls).__init__(name, bases, dict)
for opcode in OPCODES:
poll_func, parse_func = OPCODES[opcode]
m = _make_poller(opcode, poll_func, parse_func)
setattr(cls, poll_func.__name__, m)
Я хочу иметь возможность добавлять различные строки docstring к каждому из этих методов, которые он добавляет. m-это метод, возвращаемый функцией _make_poller (). Есть идеи? Есть ли какой-то способ обойти ограничение python на изменение строк документов?
2 ответа:
Для простых функций:
def f(): # for demonstration pass f.__doc__ = "Docstring!" help(f)
Это работает как в python2, так и в python3, на функциях с определенными связями и без них. Вы также можете сделать
+=
. Обратите внимание, что это__doc__
, а не__docs__
.Для методов необходимо использовать атрибут
__func__
метода:class MyClass(object): def myMethod(self): pass MyClass.myMethod.__func__.__doc__ = "A really cool method"
Вы также можете использовать setattr для объекта class/function и задать строку docstring.
setattr(foo,'__doc__',"""My Doc string""")