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:

Dien ook de klasse 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)
    

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