Μετάβαση στο κύριο περιεχόμενο
🔒 Λειτουργία προεπισκόπησης. Τα πρώτα δεκαπέντε μαθήματα Foundations είναι δωρεάν· αυτό είναι Pro. Ξεκινήστε ένα 7ήμερο trial για να ξεκλειδώσετε τον επεξεργαστή, τις υποδείξεις AI και το υπόλοιπο του προγράμματος. Απαιτείται κάρτα, ακυρώνετε οποιαδήποτε στιγμή από το Dashboard.Ξεκινήστε 7ήμερο trial →
← ΜαθήματαSenior Deep-DivesΕνότητα 1 · Concurrency & Async InternalsΠληκτρολόγηση: TypeVar, Generic, Protocolpredict4 / 161
+100 XP
Εργασία
📝 **Εργασία:** Προβλέψτε την ετυμηγορία 4 γραμμών από τον ελεγκτή πληκτρολόγησης: ένα πέρασμα περιορισμού TypeVar, μια δομική αντιστοίχιση πρωτοκόλλου, μια αναντιστοιχία πρωτοκόλλου και μια συντόμευση Any. 📋 Υλοποιήστε την παραπάνω λειτουργία. Οι δοκιμές εκτελούνται αυτόματα. 💡 **Υπόδειξη:** Ξαναδιάβασε τη θεωρία αν κολλήσεις.
Πρόβλεψε έξοδο

Διάβασε τον κώδικα προσεκτικά

# 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.

Τι θα εμφανίσει το πρόγραμμα; Γράψε εδώ:

💬 Συζήτηση

Γίνε ο πρώτος — κάνε μια ερώτηση ή μοιράσου μια συμβουλή.
Σύνδεση για να συμμετάσχεις στη συζήτηση. Η ανάγνωση είναι δωρεάν.
Φόρτωση συζήτησης…