Bekijk de onderstaande klasse Datum
. Deze klasse bevat de methode
__str__()
die het mogelijk maakt een datum in een welbepaald formaat
af te drukken, namelijk dag/maand/jaar
, waarbij de maand numeriek weergegeven wordt.
Het is de bedoeling om in deze oefening twee nieuwe klassen te definiƫren die overeren
van de klasse Datum
, waarbij verschillende afdrukformaten gedefinieerd worden, namelijk:
NedDatum
: afdrukformaat : dag maand jaar
(gescheiden door spaties) waarbij de maand in tekst
weergegeven wordt (voorbeeld: 1 december 2016
).
EngDatum
: afdrukformaat : maand dag, jaar
waarbij de maand in tekst en in het
Engels wordt aangegeven (voorbeeld: December 1, 2016
). Er verschijnt een spatie tussen de maand en de dag,
terwijl de dag en het jaar door een komma en een spatie gescheiden worden.
Datum
hoef je niet in te dienen.
class Datum(object): aantal_dagen = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] min_jaar = 1900 @staticmethod def _is_geldig(dag, maand, jaar): if maand > 0 and maand < 13 and jaar > Datum.min_jaar : return dag > 0 and dag <= Datum.aantal_dagen[maand - 1] else: return False def __init__(self, dag, maand, jaar): if Datum._is_geldig(dag, maand, jaar): self._dag = dag self._maand = maand self._jaar = jaar else: self._dag = 0 self._maand = 0 self._jaar = 0 def get_dag(self): return self._dag def get_maand(self): return self._maand def get_jaar(self): return self._jaar def __str__(self): return str(self._dag) + '/' + str(self._maand) + '/' + str(self._jaar)
d_standaard = Datum(1, 12, 2016) d_engels = EngDatum(1, 12, 2016) d_nederlands = NedDatum(1, 12, 2016) print(d_standaard) -> 1/12/2016 print(d_engels) -> December 1, 2016 print(d_nederlands) -> 1 december 2016