明确设置方法的文档字符串

8 投票
2 回答
4806 浏览
提问于 2025-04-16 17:15

我在维护一个叫做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在更改文档字符串方面的限制呢?

2 个回答

3

你也可以在类或函数对象上使用 setattr 来设置文档字符串。

setattr(foo,'__doc__',"""My Doc string""")
19

对于普通的函数:

def f():  # for demonstration
    pass

f.__doc__ = "Docstring!"
help(f)

这个方法在python2和python3中都能用,无论函数有没有定义文档字符串(docstring)。你也可以使用 +=。注意,这里是 __doc__,而不是 __docs__

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

class MyClass(object):

    def myMethod(self):
        pass

MyClass.myMethod.__func__.__doc__ = "A really cool method"

撰写回答