[Python-Dev] PEP 591 discussion (final qualifier) happening at typing-sig@ (original) (raw)

Nathaniel Smith njs at pobox.com
Mon Apr 15 23:12:33 EDT 2019


On Mon, Apr 15, 2019 at 5:00 PM Michael Sullivan <sully at msully.net> wrote:

I've submitted PEP 591 (Adding a final qualifier to typing) for discussion to typing-sig [1].

I'm not on typing-sig [1] so I'm replying here.

Here's the abstract: This PEP proposes a "final" qualifier to be added to the typing module---in the form of a final decorator and a Final type annotation---to serve three related purposes:

* Declaring that a method should not be overridden * Declaring that a class should not be subclassed * Declaring that a variable or attribute should not be reassigned

I've been meaning to start blocking subclassing at runtime (e.g. like [2]), so being able to express that to the typechecker seems like a nice addition. I'm assuming though that the '@final' decorator doesn't have any runtime effect, so I'd have to say it twice?

@typing.final class MyClass(metaclass=othermod.Final): ...

Or on 3.6+ with init_subclass, it's easy to define a @final decorator that works at runtime, but I guess this would have to be a different decorator?

@typing.final @alsoruntime.final class MyClass: ...

This seems kinda awkward. Have you considered giving it a runtime effect, or providing some way for users to combine these two things together on their own?

-n

[1] https://github.com/willingc/pep-communication/issues/1 [2] https://stackoverflow.com/a/3949004/1925449

-- Nathaniel J. Smith -- https://vorpus.org



More information about the Python-Dev mailing list