Aller au contenu principal
🔒 Mode aperçu. Les quinze premières leçons Foundations sont gratuites ; celle-ci est Pro. Démarrez un trial de 7 jours pour débloquer l'éditeur, les conseils AI et le reste du programme. Carte requise, annulez à tout moment dans Dashboard.Démarrer le trial de 7 jours →
← CoursSenior Deep-DivesModule 6 · FAANG-2026 deep divestyping.Protocol — runtime_checkable's hidden holepredict109 / 161
+150 XP
Tâche
📝 **Tâche :** Prédisez le résultat exact. Quatre classes sont testées par rapport à un protocole \`Closeable\` vérifiable à l'exécution (une méthode : \`close()\`). \`Fichier\` est le cas canonique. \`Bag\` n'a pas de \`close\`. \`Stream\` définit \`close\` sans hériter. \`Bizarre\` a \`close = 42\` — un int. Que dit l’instance pour chacun ? 📋 Implémentez la fonction ci-dessus. Les tests s'exécutent automatiquement. 💡 **Indice :** Relisez la théorie si vous êtes bloqué.
Prédis la sortie

Lis le code attentivement

from typing import Protocol, runtime_checkable


@runtime_checkable
class Closeable(Protocol):
    def close(self) -> None: ...


class File:
    def close(self):
        return "file"


class Bag:
    pass


class Stream:
    """Doesn't inherit Closeable; still passes by structural matching."""
    def close(self):
        return "stream"


class Weird:
    """Has a 'close' attribute, but it's an int."""
    close = 42


print(isinstance(File(), Closeable))
print(isinstance(Bag(), Closeable))
print(isinstance(Stream(), Closeable))
print(isinstance(Weird(), Closeable))

Que va afficher le programme ? Écris ici :

💬 Discussion

Soyez le premier à poser une question ou partager une astuce.
Connectez-vous pour rejoindre la discussion. La lecture est gratuite.
Chargement de la discussion…