Forward References

MRAB python at mrabarnett.plus.com
Sun Sep 3 18:56:37 EDT 2023


On 2023-09-03 21:43, Jonathan Gossage via Python-list wrote:
> I am attempting to use forward references in my program and I am failing.
> This also does not work with the older way of putting the name of a class
> as a string. Here is some sample code:
> 
> from __future__ import annotations
> 
> from dataclasses import dataclass
> from typing import TypeAlias
> 
> 
> ColorDef: TypeAlias = RGB | int | str
> 
> 
> 
> @dataclass(frozen=True, slots=True)
> class RGB(object):
> 
> Can anyone suggest how I should fix this without reversing the statement
> order?
> 
>      pass
> 
The usual way to deal with forward type references is to use a string 
literal, i.e. 'RGB', but that doesn't work with '|', so use typing.Union 
instead:

from typing import TypeAlias, Union

ColorDef: TypeAlias = Union['RGB', int, str]



More information about the Python-list mailing list