On Thu, Nov 18, 2021 at 7:44 PM Stephen J. Turnbull
<stephenjturnb...@gmail.com> wrote:
>
> Steven D'Aprano writes:
>  > 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"
>
>  > 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.
>
> I agree it's a real problem.  But I don't think it's a show-stopper.
> That is, the proposal as written also seems to be a near no-op from
> the point of view of backwards compatibility (I guess if you list the
> attributes of the class you would discover the new dunder).
>
>  > 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."""
>
> True, but why would one want to, except to save the space?  And for
> that, there's -OO.
>

Possible wrinkle: What if a string literal immediately follows
something that isn't an attribute declaration?

class A:
    "Class docstring"
    x: int
    "x docstring"
    y: bool; True
    "y docstring?"
    print("Hello, world?")
    "print docstring??"
    def spam(self): ...
    "spam docstring???"

I presume it would have to be permitted and ignored, as per current
behaviour (otherwise it'd create bizarre errors in currently-legal
code). But that may make for some hard-to-track-down bugs when there's
an error in a declaration, or when something technically breaks the
declaration from the docstring (like the presumably-unintended
semicolon in the y line).

I'm personally -0 on this - I don't declare class level type
annotations enough to want to use this, but if it existed, I'd
probably find a way to use it for a DSL or something. It's of minimal
value, but it should also be of minimal disruption.

ChrisA
_______________________________________________
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/D6QWPRMYETJCGQOWRUH2KBW2ZHMPCDE2/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to