在Python 3中设置动态类型的文档字符串

时间:2011-11-16 01:18:13

标签: python python-3.x

我正在动态创建一些类,我希望它们具有不同的文档字符串。我有:

def make_class(class_docstring):
    class X:
        pass
    X.__doc__ = class_docstring
    return X

这不起作用,因为docstrings是只读的。然后,我试过了:

def make_class(class_name, class_docstring):
    class X:
        def __init__(self):
            super().__init__()

    d = {'__doc__': class_docstring}
    d.update(X.__dict__)
    return type(class_name, (), d)

ClassName = make_class(
    'ClassName',
    """
    Some docstring...
    """)

直到必须拨打super

动态设置docstring属性的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

您可以在类中设置docstring。

>>> def make_class(class_docstring):
...     class X:
...         __doc__ = class_docstring
...     return X
...
>>> x = make_class('test doc')
>>> x
<class '__main__.X'>
>>> xx = x()
>>> xx.__doc__
'test doc'

我不确定为什么你的第二次尝试失败了。