如何解决Sphinx Autodoc:如何记录装饰器添加的属性?
我有一个装饰器,它向 pack()
类添加 unpack()
和 NamedTuple
方法,以帮助我使用 python 的 struct
模块进行序列化(参见下面的代码)。
装饰器所做的一件事是添加一个 pack_format
属性,该属性包含 struct
函数使用的格式字符串。我想知道如何记录这个。
我曾尝试在作业中使用 #:
样式的注释,但没有奏效。
我尝试的另一件事是添加 pack_format
属性而不是属性。这种工作方式,因为 sphinx 现在包含文档字符串,但我无法以与 Sphinx 正常记录属性值相同的方式查看 pack_format 属性的值(记录下来非常有用)。
def fixed_format(pack_format: str):
def decorator(cls):
cls.pack_format = pack_format #: The serialization format.
# look for a pack_values() method,or default to __iter__
get_values = getattr(cls,'pack_values',cls.__iter__)
def pack(self) -> bytes:
"""Serialize the package payload.
This method was created by the :func:`fixed_format` decorator.
"""
return struct.pack(self.pack_format,*get_values(self))
ctor = getattr(cls,'unpack_values',cls)
def unpack(cls,buf: bytes):
"""Deserialize the package payload and return a new instance.
This class method was created by the :func:`fixed_format` decorator.
"""
# look for an unpack_values() class method,or default to the class constructor
values = struct.unpack(cls.pack_format,buf)
return ctor(*values)
cls.pack = pack
cls.unpack = classmethod(unpack)
return cls
return decorator
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。