Alternative Konstrukteure
In Python kannst du auch Klassenmethoden definieren, indem du den @classmethod Dekorator und ein spezielles erstes Argument cls verwendest. Die Hauptanwendung von Klassenmethoden ist die Definition von Methoden, die eine Instanz der Klasse zurückgeben, aber nicht den gleichen Code wie __init__() verwenden.
Du entwickelst zum Beispiel ein Zeitreihenpaket und möchtest eine eigene Klasse für die Arbeit mit Daten definieren, BetterDate. Die Attribute der Klasse sind year, month und day. Du möchtest einen Konstruktor haben, der BetterDate Objekte mit den Werten für Jahr, Monat und Tag erstellt, aber du möchtest auch in der Lage sein, BetterDate Objekte aus Strings wie 2020-04-30 zu erstellen.
Die folgenden Funktionen könnten für dich nützlich sein:
.split("-")Methode wird eine Zeichenkette bei"-"in ein Array aufgespalten, z.B."2020-04-30".split("-")gibt["2020", "04", "30"]zurück,int()wandelt eine Zeichenkette in eine Zahl um, z.B.int("2019")ist2019.
Diese Übung ist Teil des Kurses
Objektorientierte Programmierung in Python
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
class BetterDate:
# Constructor
def __init__(self, year, month, day):
# Recall that Python allows multiple variable assignments in one line
self.year, self.month, self.day = year, month, day
# Define a class method from_str
____
def from_str(____, datestr):
# Split the string at "-" and convert each part to integer
parts = datestr.split("-")
year, month, day = int(parts[0]), ____, ____
# Return the class instance
____ ____(____, ____, ____)
bd = BetterDate.from_str('2020-04-30')
print(bd.year)
print(bd.month)
print(bd.day)