#Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅
PEP 695 Π±ΡΠ» ΠΏΡΠΈΠ½ΡΡ! π¨
PEP 695
Π Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠ΅ ΡΠ°ΠΉΠΏΠ²Π°ΡΠΎΠ² ΠΈ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ².
ΠΠΎΡ ΠΊΠ°ΠΊ ΡΠ΅ΠΉΡΠ°Ρ ΠΌΡ ΡΠΎΠ·Π΄Π°ΡΠΌ generic type alias:
from typing import TypeAlias
_T = TypeVar("_T")
ListOrSet: TypeAlias = list[_T] | set[_T]
Π’Π΅ΠΏΠ΅ΡΡ Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ΅ΠΏΠ°, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄ΠΈΡΡ ΡΠ°ΠΊ:
type ListOrSet[T] = list[T] | set[T]
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ² Π² ΠΊΠ»Π°ΡΡΠ°Ρ
ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΡΠΎΡΡΠΈΠ»ΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ½ Π²ΡΠ³Π»ΡΠ΄ΠΈΡΡ ΡΠ°ΠΊ:
class ClassA[T: str]:
def method1(self) -> T:
...
ΠΠ΄Π΅ T - TypeVar.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΡ.
Π§ΡΠΎ Π²Ρ Π΄ΡΠΌΠ°ΡΠ΅ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ? Π‘ΡΠΈΡΠ°Π΅ΡΠ΅ Π»ΠΈ Π²Ρ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ "var ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ
" ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ, Ρ
ΠΎΡΠΎΡΠΈΠΌ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΏΠΈΡΠΎΠ½Π°? π€