Bekijk de opnderstaande klasse $$\verb!Datum!$$. Deze klasse bevat de methode $$\verb!__str__()!!$$ die het mogelijk maakt een datum in een welbepaald formaat af te drukken, namelijk $$\verb!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 $$\verb!Datum!$$, waarbij verschillende afdrukformaten gedefinieerd worden, namelijk:

De klasse $$\verb!Datum!$$ moet niet ingediend worden.
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)
   

Voorbeeld

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