EyDu hat geschrieben:... dass du in deinem Beispiel nie "_recurrence_len" aufrufst, ...
Sorry, müsste natürlich
Code: Alles auswählen
class Recurrence(object):
def __init__(self, foo, bar):
self.end_date = self.list_match(self._recurrence_len())
heissen...
ws hat geschrieben:Python ruft dann automatisch die Methode der am besten passenden Klasse auf "s. Python Method resolution order", was in diesem Fall YearlyRecurrence._recurrence_len() ist.
Jepp, wie mir soeben aufgefallen ist, liegt der Fehler auch an anderer Stelle:
Beide Klassen, sowohl MonthlyRecurrence() wie auch YearlyRecurrence() legen beim Instanziieren ein Attribut self.interval an. Beim Instanziieren von YearlyRecurrence() erhält die Basisklasse als interval-Attribut immer den Wert 1. 'interval' wird dann in der jeweiligen _recurrence_len() zur Berechnung verwendet. Um das ganze zu vereinfachen, habe ich den Ablauf mal als kleines Modell abgebildet:
Code: Alles auswählen
class Recurrence(object):
def __init__(self, interval):
self.interval = interval
print(self.get_interval())
class MonthlyRecurrence(Recurrence):
def __init__(self, interval):
First.__init__(self, interval)
self.interval = interval
print(self.get_interval())
def get_interval(self):
return self.interval
class YearlyRecurrence(MonthlyRecurrence):
def __init__(self, interval):
self.interval = interval
Second.__init__(self, 1)
print(self.get_interval())
def get_intervclass Recurrence(object):
def __init__(self, interval):
self.interval = interval
print(self.get_interval())
Warum erhalte ich hier folgende Ausgabe?
Code: Alles auswählen
In [176]: y = YearlyRecurrence(3)
1
1
1
In [177]: y.interval
Out[177]: 1
pillmuncher hat geschrieben:Ein jährlich wiederkehrendes Ereignis ist kein monatlich wiederkehrendes Ereignis.
Monatliche Wiederholung: Jeden 1. und 15. des Monats
Jährliche Wiederholung: Alle 2 Jahre am 1. und 15. Januar im Januar und März
Ich habe also in einer jährlichen Wiederholung lediglich den Jahresinterval und die Angabe von Monaten. Ich war da jetzt ganz pragmatisch und hab' von MonthlyRecurrence() geerbt, damit ich die Abfrage nur noch um den Jahresinterval und die Monate erweitern muss. Hier der ganze Code:
http://paste.pocoo.org/show/289815/
Vielleicht hast Du ja Lust, da mal drüberzuschauen.
Gruß
mutetella