Preskoči na glavni sadržaj
🔒 Način pregleda. Prvih petnaest Foundations lekcija je besplatno; ova je Pro. Pokrenite 7-dnevni trial da otključate editor, AI savjete i ostatak programa. Kartica obavezna, otkažite bilo kada u Dashboard.Pokreni 7-dnevni trial →
← KolegijiSenior Deep-DivesModule 7 · Memory, GC, modern typing@runtime_checkable Protocol — structural typing + its blind spotspredict123 / 161
+150 XP
Zadatak
📝 **Zadatak:** Predvidite točan rezultat. Protokol Sized zahtijeva __len__. Pravi tipovi s __len__ prolazom; vrste bez toga ne uspijevaju. Posljednji slučaj — `FakeSized` — ima atribut koji se ne može pozivati ​​pod nazivom `__len__`, a runtime_checkable i dalje kaže True jer provjerava samo postojanje, a ne mogućnost poziva. Ovo je stvar za starije osobe koju vrijedi znati. 📋 Implementirajte gornju funkciju. Testovi se pokreću automatski. 💡 **Savjet:** Ponovno pročitajte teoriju ako zapnete.
Predvidi izlaz

Pažljivo pročitaj kod

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))

Što će program ispisati? Napiši ovdje:

💬 Rasprava

Budi prvi — postavi pitanje ili podijeli savjet.
Prijavi se kako bi se pridružio raspravi. Čitanje je besplatno.
Učitavanje rasprave…