On Thu, Sep 22, 2016 at 10:58 PM David Mertz <me...@gnosis.cx> wrote:
> On Thu, Sep 22, 2016 at 12:35 PM, אלעזר <elaz...@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.
> Mypy fails on this, and version 4.4 fails very hard and ugly, with errors
for each line to the end of the file + 1. It can be fixed of course, but
it's worth noting: mypy does not expect arbitrary expression - because it
is an annotation.
Python-ideas mailing list
Code of Conduct: http://python.org/psf/codeofconduct/