Vai al contenuto principale
🔒 Modalità anteprima. Le prime quindici lezioni di Foundations sono gratuite; questa è Pro. Avvia un trial di 7 giorni per sbloccare l'editor, i suggerimenti AI e il resto del programma. Carta richiesta, disdici in qualsiasi momento dalla Dashboard.Avvia trial di 7 giorni →
← CorsiSenior Deep-DivesModule 10 · Production idioms (modern Python)@dataclass(kw_only=True, slots=True) — the modern senior defaultpredict143 / 161
+150 XP
Compito
📝 **Compito:** Prevedere l'output su 5 righe. Una classe dati utente con kw_only=True + slots=True viene costruita tramite parola chiave; viene quindi tentata la costruzione posizionale (rifiutata); viene tentata l'assegnazione di attributi all'esterno degli slot (rifiutata). Una classe dati Mix separata utilizza kw_only per campo per forzare la parola chiave "b" mantenendo la posizione "a" e "c". 📋 Implementa la funzione sopra. I test vengono eseguiti automaticamente. 💡 **Suggerimento:** Rileggi la teoria se rimani bloccato.
Predici output

Leggi il codice attentamente

from dataclasses import dataclass, field


@dataclass(kw_only=True, slots=True)
class User:
    id: int
    name: str
    email: str


u = User(id=42, name="Ada", email="ada@x.com")
print(u)
print(hasattr(u, "__dict__"))

try:
    User(42, "Ada", "ada@x.com")
except TypeError as e:
    print("positional rejected" if "positional" in str(e).lower() else "rejected")

try:
    u.extra = "no"
except AttributeError:
    print("attrs locked")


@dataclass
class Mix:
    a: int
    b: int = field(kw_only=True)
    c: int = 0


m = Mix(1, c=3, b=2)
print(m)

Cosa stamperà il programma? Scrivi qui:

💬 Discussione

Sii il primo a fare una domanda o condividere un consiglio.
Accedi per partecipare alla discussione. La lettura è gratuita.
Caricamento discussione…