from typing import Generic, TypeVar, cast
from dataclasses import dataclass
@dataclass
class SteamSave:
prop: int
@dataclass
class XboxSave:
prop: str
T = TypeVar('T', SteamSave, XboxSave)
class Editor(Generic[T]):
def __init__(self, save: T):
self.save_data = save
def print_prop(self):
print(self.save_data.prop)
class Editor2():
def __init__(self, save: SteamSave | XboxSave):
self.save_data = save
def print_prop(self):
print(self.save_data.prop)
print(Editor)
print(Editor[SteamSave])
print(Editor[XboxSave])
VSCode 对两个类 self.save_data.prop
的类型推断结果:
int* | str*
和 int | str
有什么区别,多出来的星号是什么意思?
int | str
表示一个变量可以是int类型或str类型int* | str*
在Python的标准类型注解或类型系统中并不是一个有效的表达式。