On 1/12/21 11:26 AM, Jim J. Jewett wrote:
If I understand correctly, the problem is that you can't store multiple
alternative annotations on my_attr. Therefore:
class C:
my_attr:(int if random.random > 0.5 else float)
should be OK, because there is only a single annotation.
Sure, that works fine. Any expression (except "yield" and ":=") is okay
in an annotation.
What about optional attributes, like:
class C:
if random.random() > 0.5:
my_attr:int=3
Also, would (conditionally defined) function variable attributes become a
problem if they were actually stored? (Take Larry's class example, and make if
a def instead of a class statement.)
You mean attributions on function locals?
def foo():
if random.random() > 0.5:
x:int=3
else:
x:float=3.5
As I mentioned in my PEP, attributions on function locals have no effect
at runtime. If they did, this would cause the same problem that doing
it in classes has.
Cheers,
//arry/
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at
https://mail.python.org/archives/list/python-dev@python.org/message/RXNT6SUAIBOEUBGQLZ4TCW7CJVWAFY7I/
Code of Conduct: http://python.org/psf/codeofconduct/