[Python-ideas] Delay evaluation of annotations

David Mertz mertz at gnosis.cx
Thu Sep 22 15:58:50 EDT 2016


On Thu, Sep 22, 2016 at 12:35 PM, אלעזר <elazarg at gmail.com> wrote:

> I think we're talking about different things here. I just referred to the
> common need to use the name of the current class in type annotation
>
> class A:
>     def add(self, other: A) -> A: ...
>

Yeah, I find the need for using the string "A" here a wart. Rather than
change the entire semantics of annotations, it feels like a placeholder for
this meaning would be better.  E.g.:

class A:
    def __add__(self, other: CLS) -> CLS: ...

A static checker could do the magic of recognizing that special name easily
enough (no harder than recognizing the quoted string).  At runtime 'CLS'
could either just be a singleton with no other behavior... or perhaps it
could be some sort of magic introspection object.  It's more verbose, but
you can also spell it now as:

class A:
    def __add__(self, other: type(self)) -> type(self): ...

That's a little ugly, but it expresses the semantics we want.


-- 
Keeping medicines from the bloodstreams of the sick; food
from the bellies of the hungry; books from the hands of the
uneducated; technology from the underdeveloped; and putting
advocates of freedom in prisons.  Intellectual property is
to the 21st century what the slave trade was to the 16th.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20160922/8224f376/attachment.html>


More information about the Python-ideas mailing list