"Schatz, wie sollen wir es nennen?" Suche passenden Namen...
Verfasst: Dienstag 11. Dezember 2012, 09:22
Guten morgen,
ich tu' mir mal wieder bei der Namensgebung schwer... Folgende Klasse verwende ich, um Argumente zum Erstellen und eventuell Berechnen eines datetime-objects zu sammeln, fehlende Argumente durch defaults zu ersetzen und schließlich ein datetime-object zurückzugeben.
'DefaultDatetimeArgs' ist eben nur die halbe Wahrheit. Es wird ja letztlich auch ein datetime-object berechnet und zurückgegeben. '...Factory' ist doch eigentlich was anderes, oder? '...Creator' klingt doof, hab' ich auch so noch nicht gesehen. Passt '...Generator'? Oder deutet mein Namensproblem darauf hin, dass die Klasse zu viel macht?
mutetella
ich tu' mir mal wieder bei der Namensgebung schwer... Folgende Klasse verwende ich, um Argumente zum Erstellen und eventuell Berechnen eines datetime-objects zu sammeln, fehlende Argumente durch defaults zu ersetzen und schließlich ein datetime-object zurückzugeben.
Code: Alles auswählen
class DefaultDatetimeArgs(dict):
DATETIME_ARG_NAMES = ('year', 'month', 'day', 'hour', 'minute')
DELTA_ARG_NAMES = ('years', 'months', 'days', 'hours', 'minutes')
def __init__(self, default_datetime=None):
dict.__init__(self)
default_datetime = default_datetime or datetime.datetime.now()
self.datetime_args = dict(zip(self.DATETIME_ARG_NAMES,
default_datetime.timetuple()))
self.delta_args = dict(zip(self.DELTA_ARG_NAMES,
(0, 0, 0, 0, 0)))
def __missing__(self, key):
if key.endswith('s'):
return self.delta_args[key]
elif not key.endswith('s'):
return self.datetime_args[key]
def _datetime_args(self):
return dict((key, self[key]) for key in self.DATETIME_ARG_NAMES)
def _delta_args(self):
return dict((key, self[key]) for key in self.DELTA_ARG_NAMES)
def create(self):
try:
return (datetime.datetime(**self._datetime_args()) +
relativedelta.relativedelta(**self._delta_args()))
#relativedelta raises several error-types... :-(
except (ValueError, TypeError, OverflowError):
raise ValueError(ERR_NO_VALID_DATETIME_ARGS.format(
self['year'] + self['years'],
self['month'] + self['months'],
self['day'] + self['days'],
self['hour'] + self['hours'],
self['minute'] + self['minutes']))
mutetella