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
in, samen met je code voor de klassen NedDatum
en EngDatum
.
class Datum: 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] return False def __init__(self, dag, maand, jaar): if Datum._is_geldig(dag, maand, jaar): self._dag, self._maand, self._jaar = dag, maand, jaar else: self._dag, self._maand, self._jaar = 0, 0, 0 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