Строки документов наполеоновского типа, как они описаны в документах sphinx (см. Класс ExampleError
, чтобы узнать о них), явно касаются вашего случая:
Метод __init__ может быть задокументирован либо в строке документации уровня класса, либо в виде строки документации самого метода __init__.
И если вам не нужно это поведение, вы должны явно сказать sphinx , что строка документации конструктора и строка документации класса - это не одно и то же.
Это означает, что вы можете просто вставить информацию о своем конструкторе в тело строки документа.
В случае, если вы строите документы из своих строк документации, можно достичь следующих гранулярностей:
1) Минимальный минимум:
@dataclass
class TestClass:
"""This is a test class for dataclasses.
This is the body of the docstring description.
"""
var_int: int
var_str: str
2) Описание дополнительных параметров конструктора:
@dataclass
class TestClass:
"""This is a test class for dataclasses.
This is the body of the docstring description.
Args:
var_int (int): An integer.
var_str (str): A string.
"""
var_int: int
var_str: str
3) Описание дополнительного атрибута:
@dataclass
class TestClass:
"""This is a test class for dataclasses.
This is the body of the docstring description.
Attributes:
var_int (int): An integer.
var_str (str): A string.
"""
var_int: int
var_str: str
Описания параметров и атрибутов, конечно, тоже можно комбинировать, но, поскольку классы данных должны быть прямыми отображениями, я не вижу причин для этого.
На мой взгляд, 1) подходит для небольших или простых классов данных - он уже включает сигнатуру конструктора с соответствующими им типами, что достаточно для класса данных. Если вы хотите сказать больше о каждом атрибуте, лучше всего подойдет 3) .