On Wed, Nov 17, 2021 at 02:26:16PM -0000, tmkehrenb...@gmail.com wrote:

> @dataclass
> class A:
>     """Docstring for class A."""
>     x: int
>     """Docstring for x"""
>     y: bool = True
>     "Docstring for y"
> 
> It is a bit awkward that the docstring is *below* the definition of the
> attribute, but it can't be put above because it could be confused for
> the class docstring.

Function and class docstrings follow *below* the function/class 
signature, so I don't think that's a problem.

However a real problem is that bare strings like that are already legal, 
although only as a no-op. People sometimes use them as multiline 
comments.

So we would have no real way of distinguishing between these cases:

    class A:
        """Docstring for class A."""
        x: int
        """Docstring for x"""
        y: bool = True
        """Just a comment."""

Making such strings syntactically meaningful would be a breaking change, 
although one with a very small impact. (Some strings which were 
previously ignored by the interpreter will now be kept in memory as 
docstrings.)


> My proposal would be to just enshrine this syntax as the syntax for
> attribute docstring, and to make them available at runtime.  They would
> be stored in a dictionary like the type annotations.  For example like
> this:
> 
> A.__attrdoc__ == {"x": "Docstring for x", "y": "Docstring for y"}

You could get that same effect with a decorator:


    @attrdoc(x="Doctring for x",
             y="Doctring for y")
    class A:
        """Class docstring."""
        x: int
        y: bool = True


There's some duplication of the names, which is sad, but otherwise I 
don't mind it.

-- 
Steve
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/2F7CZRNSEEWRIBUFTTR3CBTLWO6APKJW/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to