[Python-ideas] Delay evaluation of annotations
Nick Coghlan
ncoghlan at gmail.com
Fri Sep 23 02:23:08 EDT 2016
On 23 September 2016 at 15:50, Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
> אלעזר wrote:
>>
>> it feels like a
>> placeholder for this meaning would be better. E.g.:
>>
>> class A:
>> def __add__(self, other: CLS) -> CLS: ...
>
>
> That's fine for a class that refers to itself, but
> what about classes that refer to each other? This
> only addresses a small part of the problem.
Same answer as with any other circular dependency: the code smell is
the circular dependency itself, not the awkwardness of the syntax for
spelling it. If the string based "circular reference here!" spelling
really bothers you, refactor to eliminate the circularity (e.g. by
extracting a base class or an implementation independent interface
definition), rather than advocating to make the spelling less
obnoxious.
The difference between that and the "methods referring to the class
they're defined in" case is that it's likely to be pretty normal to
want to do the latter, so it may prove worthwhile to provide a cleaner
standard spelling for it. The counter-argument is the general
circularity one above: do you *really* need instances of the
particular class being defined? Or is there a more permissive
interface based type signature you could specify instead? Or perhaps
no type signature at all, and let ducktyping sort it out implicitly at
runtime?
Cheers,
Nick.
--
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
More information about the Python-ideas
mailing list