On Tue, Apr 26, 2022 at 12:33 AM Mehdi2277 <[email protected]> wrote:
> The forward class annotations would not need need to be processed at
> runtime and could be no-ops.
>
> forward class A:
> x: int
> y: list[int]
>
>
So, as I"ve written before, since there seems to be no way out of Writing
Everything Twice
what about:
```
from typing import Protocol
class AProto(Protocol):
x: int
y: list[int]
def distance(self, x: int, y: int) -> list[float]:
...
class B:
value: AProto
class A(AProto): # inheriting from the protocol is optional, as per
PEP-544
x: int
y: list[int]
def distance(self, x: int, y: int) -> list[float]:
# code for distance goes here
...
```
The best advantage of this particular bikeshed is that it makes
full use of Guido's Time Machine and is readily usable from Python 3.8
onwards!
A.__annotations__ could be empty. For a more complete example you could
> have,
>
> forward class A:
> value: B # This annotation is solely for type checker and is not
> actually saved at runtime.
>
> class B:
> value: A # Real annotation that is saved.
>
> continue class A:
> value: B # Real annotation that is saved.
>
> The rule would then be that any annotation inside forward class is
> equivalent to a noop. Continue class would still need to have same
> annotation repeated to actually set it at runtime.
> _______________________________________________
> Python-Dev mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
> https://mail.python.org/mailman3/lists/python-dev.python.org/
> Message archived at
> https://mail.python.org/archives/list/[email protected]/message/O3HMCIWUM6NGTSCGL7HFRBSDT7A4KFHP/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
Python-Dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/3CIYJ43YQ5SCGO7M4LU2P6YCWNDV64DC/
Code of Conduct: http://python.org/psf/codeofconduct/