我帮助维护一个名为nxt-python的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限制?
答案 0 :(得分:17)
对于普通功能:
def f(): # for demonstration
pass
f.__doc__ = "Docstring!"
help(f)
这适用于python2和python3,适用于定义和不定义docstrings的函数。您也可以+=
。请注意,它是__doc__
而不是__docs__
。
对于方法,您需要使用方法的__func__
属性:
class MyClass(object):
def myMethod(self):
pass
MyClass.myMethod.__func__.__doc__ = "A really cool method"
答案 1 :(得分:2)
您也可以在类/函数对象上使用setattr并设置docstring。
setattr(foo,'__doc__',"""My Doc string""")