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:

De klasse 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)

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