בשביל שאני אוכל ליצור לוח פעם עם חד קרן ופעם בלי, ובלי לשכפל קוד, הוספתי משתנה בוליאני שלפי זה הקוד משנה את ה Rook ל Unicorn. הקוד עובד, הבעיה ש mypy זורק לי שגיאה.
הקוד:
rook_or_unicorn = Rook
if use_unicorn:
rook_or_unicorn = Unicorn
ה Annotation:
Union[Rook, Unicorn]
והשגיאה:
Expected type ‘Union[Rook, Unicorn]’, got ‘Type[Union[Unicorn, Rook]]’ instead
Yam
אוקיי, ההבחנה פה היא קצת טריקית:
המשתנה rook_or_unicorn הוא לא מסוג Rook, הוא עצמו ממש הערך Rook.
מה שאתה צריך לשאול את עצמך הוא “מה הסוג של Rook?” או “איך עושים אנוטציה לסוג של Rook?”