Ugrás a fő tartalomra
🔒 Előnézet mód. Az első tizenöt Foundations lecke ingyenes; ez Pro. Indíts 7 napos trial-t, hogy feloldd a szerkesztőt, az AI tippeket és a tananyag többi részét. Kártya szükséges, bármikor lemondhatod a Dashboard-ban.7 napos trial indítása →
← KurzusokSenior Deep-Dives1. modul · Konkurencia és aszinkron belsőkGépelés: TypeVar, Generic, Protocolpredict4 / 161
+100 XP
Feladat
📝 **Feladat:** Jósolja meg a 4 soros ítéletet a gépelés-ellenőrzőből: egy TypeVar szűkítő passz, egy protokoll szerkezeti egyezés, egy protokoll eltérés és egy Any-parancsikon. 📋 Valósítsa meg a fenti funkciót. A tesztek automatikusan futnak. 💡 **Tipp:** Ha elakad, olvassa el újra az elméletet.
Találd ki a kimenetet

Olvasd el a kódot figyelmesen

# A miniature mypy-style checker that only knows the rules from
# the theory above. Calls return "ok" or "error: <reason>".

class TypeChecker:
    def check_generic(self, stack_type, value_type):
        # Stack[int] doesn't accept str → mypy error.
        if stack_type == value_type:
            return "ok"
        return f"error: Stack[{stack_type}] cannot accept {value_type}"

    def check_protocol(self, obj_methods, required_methods):
        # Protocol passes when obj has every required method —
        # NO inheritance required (structural subtyping).
        missing = required_methods - obj_methods
        if not missing:
            return "ok"
        return f"error: missing {sorted(missing)}"

    def check_any(self, _value_type):
        # Any disables checking — always accepts. Mypy stays quiet
        # but you lose the safety net.
        return "ok"

chk = TypeChecker()

# 1) Stack[int] accepting an int — fine.
print(chk.check_generic("int", "int"))

# 2) SupportsLen Protocol — list has __len__, so it passes.
print(chk.check_protocol({"__len__", "__iter__"}, {"__len__"}))

# 3) Same protocol against an int (no __len__).
print(chk.check_protocol({"__add__"}, {"__len__"}))

# 4) Cache annotated with Any — checker stays quiet even on
# a clearly wrong assignment. Mypy bug-magnet.
print(chk.check_any("Stack[int] = 'two'"))

# What does this print? Type your prediction.

Mit ír ki a program? Írd ide:

💬 Beszélgetés

Légy az első — tegyél fel kérdést vagy oszd meg egy tippet.
Jelentkezz be hogy csatlakozz a beszélgetéshez. Az olvasás ingyenes.
Beszélgetés betöltése…