Forum » Programiranje » Težava pri pogoju razredu [Python]
Težava pri pogoju razredu [Python]
RatedR ::
Zdravo, sem začetnik v Pythonu, trenutno sem pri razredih.
Zanima me kako v metodi __str__ postavim pogoje oz. iz kje kličem spremenljivke, ki jih želim preverjat?
Spodnji primer kode naj bi spremenil vnos npr. 14.1.2017 v 14.januar.2017, in vse ostale mesece v imena namesto številke.
Težava je v tem, da ko v 8.vrstici poskušam preverjat vrednost, da ji lahko dodelim pravilen mesec napiše:
AttributeError: 'Datum' object has no attribute 'm'
Prosim za nasvet.
Zanima me kako v metodi __str__ postavim pogoje oz. iz kje kličem spremenljivke, ki jih želim preverjat?
Spodnji primer kode naj bi spremenil vnos npr. 14.1.2017 v 14.januar.2017, in vse ostale mesece v imena namesto številke.
class Datum: def __init__(self, d, m, l): self.dan = d self.mesec = m self.leto = l def __str__(self): if self.m == 1: return "{}. januar. {}" .format(d = self.dan, l = self.leto) if self.m == 2: return "{}. februar. {}" .format(d = self.dan, l = self.leto) #in tako naprej za vseh 12 mesecev datum = Datum(14,1,2017) print(datum) #željen izpis: "14. januar, 2017
Težava je v tem, da ko v 8.vrstici poskušam preverjat vrednost, da ji lahko dodelim pravilen mesec napiše:
AttributeError: 'Datum' object has no attribute 'm'
Prosim za nasvet.
- spremenilo: RatedR ()
RatedR ::
Okej tole sem popravil, ampak še vedno dela težave, čez pogoj zdaj gre ampak se ustavi pri returnu:
File "C:\Users\...", line 9, in __str__
return ("{} januar. {}" .format(d = self.dan, l = self.leto))
IndexError: tuple index out of range
File "C:\Users\...", line 9, in __str__
return ("{} januar. {}" .format(d = self.dan, l = self.leto))
IndexError: tuple index out of range
jype ::
Ja, to je narobe, bodisi takole:
return ("{} januar. {}" .format(self.dan, self.leto))
Ali pa takole:
return ("{d} januar. {l}" .format(d = self.dan, l = self.leto))
return ("{} januar. {}" .format(self.dan, self.leto))
Ali pa takole:
return ("{d} januar. {l}" .format(d = self.dan, l = self.leto))
wungad ::
Da ne boš delal 12. if/else stavkov si naredi en tuple (class var):
In potem imas one-liner v __str__ metodi:
MESECI = ( 'januar', 'februar', 'marec', 'april', 'maj', 'junij', 'julij', 'avgust', 'september', 'oktober', 'november', 'december')
In potem imas one-liner v __str__ metodi:
return "{}. {}. {}" .format(self.dan, Datum.MESECI[self.mesec], self.leto)
.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | python-rabim pomočOddelek: Programiranje | 2773 (1003) | rnla1973 |
» | [Python3] Izvajanje ukazov po določenem časuOddelek: Programiranje | 1447 (1057) | noraguta |
» | Python - težava s slovarji - vnosOddelek: Programiranje | 1294 (1116) | RatedR |
» | [Python]Naloga z razredi in dedovanjemOddelek: Programiranje | 1146 (898) | ktka |
» | python -slovarOddelek: Programiranje | 3123 (2102) | Valex86 |