Přejít k hlavnímu obsahu
🔒 Režim náhledu. Prvních patnáct lekcí Foundations je zdarma; tato je Pro. Spusťte 7denní trial pro odemčení editoru, AI nápověd a zbytku kurzu. Karta vyžadována, zrušte kdykoli v Dashboard.Spustit 7denní trial →
← KurzySenior Deep-DivesModule 7 · Memory, GC, modern typing@runtime_checkable Protocol — structural typing + its blind spotspredict123 / 161
+150 XP
Úkol
📝 **Úkol:** Předpovězte přesný výstup. Protokol Sized vyžaduje __len__. Skutečné typy s __len__ pass; typy, aniž by selhaly. Poslední případ — `FakeSized` — má nevolatelný atribut nazvaný `__len__` a runtime_checkable stále říká True, protože kontroluje pouze existenci, nikoli schopnost volání. Tohle je ta hlavní věc, kterou stojí za to vědět. 📋 Implementujte výše uvedenou funkci. Testy probíhají automaticky. 💡 **Tip:** Pokud se zaseknete, přečtěte si znovu teorii.
Předpověz výstup

Přečti kód pozorně

from typing import Protocol, runtime_checkable


@runtime_checkable
class Sized(Protocol):
    def __len__(self) -> int: ...


class Bag:
    def __init__(self, items: list) -> None:
        self._items = items

    def __len__(self) -> int:
        return len(self._items)


class Empty:
    pass


class FakeSized:
    __len__ = "not actually a method"


print(isinstance(Bag([1, 2, 3]), Sized))
print(isinstance(Empty(), Sized))
print(isinstance([1, 2], Sized))
print(isinstance("hello", Sized))
print(isinstance(42, Sized))
print(isinstance(FakeSized(), Sized))

Co program vypíše? Napiš sem:

💬 Diskuze

Buď první — polož otázku nebo se podělej o tip.
Přihlas se abys se zapojil do diskuze. Čtení je zdarma.
Načítání diskuze…