Skip to content

undocumented-public-class (D101)#

Derived from the pydocstyle linter.

What it does#

Checks for undocumented public class definitions.

Why is this bad?#

Public classes should be documented via docstrings to outline their purpose and behavior.

Generally, a class docstring should describe the class's purpose and list its public attributes and methods.

If the codebase adheres to a standard format for class docstrings, follow that format for consistency.

Example#

class Player:
    def __init__(self, name: str, points: int = 0) -> None:
        self.name: str = name
        self.points: int = points

    def add_points(self, points: int) -> None:
        self.points += points

Use instead (in the NumPy docstring format):

class Player:
    """A player in the game.

    Attributes
    ----------
    name : str
        The name of the player.
    points : int
        The number of points the player has.

    Methods
    -------
    add_points(points: int) -> None
        Add points to the player's score.
    """

    def __init__(self, name: str, points: int = 0) -> None:
        self.name: str = name
        self.points: int = points

    def add_points(self, points: int) -> None:
        self.points += points

Or (in the Google docstring format):

class Player:
    """A player in the game.

    Attributes:
        name: The name of the player.
        points: The number of points the player has.
    """

    def __init__(self, name: str, points: int = 0) -> None:
        self.name: str = name
        self.points: int = points

    def add_points(self, points: int) -> None:
        self.points += points

References#