python - kontroll av variabeltyp
Postat: 1 mars 2026, 23:40:36
Jag har börjat med python för första gången.
Har kommit så långt att jag kan skapa fina strukturer med data i dict som jag tycker verkar väldigt enkelt och praktiskt.
Men så rekommenderas det att jag borde lagra data i klasser istället. Så jag försöker, men för mig som nybörjare verkar det krångla till det mer än vad det gör nytta.
Tanken var väl att det skulle förenkla att använda klasser?
Mitt problem är att, trots att jag definierat en klass, ändå kan stoppa in vad som helst i den... som om den inte egentligen existerar utan bara är som info till mig själv om vad jag *borde* lägga in.
Exempel:
men jag kan lika väl skriva:
och jag får inte veta att det är fel förrän jag ska köra nån slags funktion som använder något av värdena.
kan jag lägga in en kontroll när jag skapar variabeln, skapa nån slags konstruktor-funktion i klassen Trans?
och kanske även när jag ska ändra innehåll , att det sker nån kotroll redan där och inte senare?
Har kommit så långt att jag kan skapa fina strukturer med data i dict som jag tycker verkar väldigt enkelt och praktiskt.
Men så rekommenderas det att jag borde lagra data i klasser istället. Så jag försöker, men för mig som nybörjare verkar det krångla till det mer än vad det gör nytta.
Tanken var väl att det skulle förenkla att använda klasser?
Mitt problem är att, trots att jag definierat en klass, ändå kan stoppa in vad som helst i den... som om den inte egentligen existerar utan bara är som info till mig själv om vad jag *borde* lägga in.
Exempel:
Kod: Markera allt
@dataclass
class Trans:
konto: int
belopp: float
text: str = ''
trans1 = Trans(6666, -55.50, 'Min text') # används som det är tänkt, dvs int, float, str.
print(trans1.konto + 100.00)Kod: Markera allt
trans2 = Trans(7777.55, '55.50', 5), # fel typ allihop
print(trans2.belopp + 100.00) # errorkan jag lägga in en kontroll när jag skapar variabeln, skapa nån slags konstruktor-funktion i klassen Trans?
och kanske även när jag ska ändra innehåll , att det sker nån kotroll redan där och inte senare?
Kod: Markera allt
trans2.belopp = 'häst'