2017-08-20 3 views
0

nimmt ich ein neues datetime.date wie Objekt erstellen tat__init__ Methode, die mehrere Argumente

class WorkDate(datetime.date): 
    pass 

Die Funktionalität dieser WorkDate ist (nicht wichtig für diese Frage), dass, wenn Sie ein timedelta Objekt hinzufügen, wird es nur bewegen zu einem Wochentag Datum. dh wenn Sie einen timedelta(1) an einem Freitag datieren, der von WorkDate datiert wird, wird es den nächsten Montag datieren WorkDate.


Wie kann ich __init__ WorkDate durch eines dieser beiden Verfahren gleiche Ergebnis

x = WorkDate(2017, 8, 3) 
y = WorkDate(datetime.date(2017, 8, 3)) 


Ich versuchte dies aber nicht funktioniert für die Initialisierung mit Datum Objekt

class WorkDate(datetime.date): 
    def __init__(self, *args): 
     if len(args) == 3: 
      super(WorkDate, self).__init__(args[0], args[1], args[2]) 
     elif len(args) == 1: 
      self.year = args[0].year 
      self.month = args[0].month 
      self.day = args[0].day 
+0

Wenn der Betrogene Sie nicht hilft, lassen Sie uns wissen, wie und Warum. –

+0

@ cᴏʟᴅsᴘᴇᴇᴅ kann nicht verstehen, warum ich nicht mit Datumsobjekt in meinem Code initialisieren kann. Es sagt * eine Ganzzahl ist erforderlich *, wenn ich versuche, mit einem Datumobjekt zu konstruieren – user2332665

Antwort

-1

Da Sie erstellen möchten Um eine beliebige Anzahl von Argumenten zu unterstützen, akzeptieren Sie *args.

Dann geben Sie diese in Ihrer __init__ an die __init__ der Basisklasse.

def __init__(*args): 
    super(WorkDate, self).__init__(*args) 

Hier ist eine Version für Python 3, mit zusätzlicher Unterstützung für benannte (Stichwort) Argumente `** kwargs':

def __init__(*args, **kwargs): 
    super().__init__(*args, **kwargs) 
Verwandte Themen