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]
--
https://mail.python.org/mailman/listinfo/python-list