J'utilise Python 3.6 et je voulais écrire une classe qui étend datatime.date
et introduit quelques attributs et méthodes supplémentaires J'ai besoin de mon code. Le problème est que l'initialisation ne semble pas fonctionner correctement en raison de trop nombreux arguments.Hériter d'une classe (datetime.date) provoque un super() .__ init __ (...) trop d'arguments TypeError
Voici le code abattu au minimum:
FORMAT__DD_MM_YYYY = "dd.mm.yyyy"
from datetime import date
class DateExtended(date):
date_string = None
date_format = None
def __init__(self, year: int, month: int, day: int, date_format: str=None):
super().__init__(year=year, month=month, day=day)
self.date_format = date_format
self.date_string = "{:02d}.{:02d}.{:04d}".format(self.day, self.month, self.year)
bla1 = DateExtended(year=2010, month=5, day=3, date_format=FORMAT__DD_MM_YYYY_DOT)
exécution provoque l'erreur suivante:
bla1 = DateExtended(year=2010, month=5, day=3, date_format=FORMAT__DD_MM_YYYY_DOT)
TypeError: function takes at most 3 arguments (4 given)
Qu'est-ce que je fais mal ici et comment devrait-il être fixé?
Est-ce parce que le date
ne s'étend pas object
?
Side note: Lorsque vous essayez de réparer moi-même, je l'ai aussi écrit une autre classe qui ne hérite pas de date
mais juste crée un objet date
et stocke comme l'un de ses attributs:
self.date = date(year=year, month=month, day=day)
Aucun problème n'est rencontré.
Oui, le problème est que 'date' est une méthode, pas une classe. Vous ne pouvez étendre une classe qu'avec une autre classe, et non une méthode. – campovski
@campovski: 'type (date)' est 'type'. On dirait une classe pour moi –
Billy
@Billy merci d'avoir soulevé cela mais vous ne comprenez pas la sortie de 'type()'. 'date' est de type' type'. Essayez 'type (2)' et vous obtenez ''. –
campovski