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 zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
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)