明确设置方法的docstring

Eri*_*ley 8 python nxt

我帮忙维护一个名为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)
Run Code Online (Sandbox Code Playgroud)

我希望能够为它添加的每个方法添加不同的docstring.m是_make_poller()返回的方法.有任何想法吗?有没有办法解决改变文档字符串的python限制?

nin*_*cko 17

对于普通功能:

def f():  # for demonstration
    pass

f.__doc__ = "Docstring!"
help(f)
Run Code Online (Sandbox Code Playgroud)

这适用于python2和python3,适用于定义和不定义docstrings的函数.你也可以+=.请注意它是否__doc__存在__docs__.

对于方法,您需要使用__func__方法的属性:

class MyClass(object):

    def myMethod(self):
        pass

MyClass.myMethod.__func__.__doc__ = "A really cool method"
Run Code Online (Sandbox Code Playgroud)

  • 我在类方法上尝试了这个并得到一个错误.事实证明,在一个类方法中,我认为这是原始问题想要的,你会想要做:self.method .__ func __.__ doc__ (4认同)