diff --git a/src/tutorial/class/hund.py b/src/tutorial/class/hund.py index 129deb9..d47423f 100644 --- a/src/tutorial/class/hund.py +++ b/src/tutorial/class/hund.py @@ -1,41 +1,88 @@ -class Hund: +from abc import ABC, abstractmethod + + +class Hund(ABC): anzahl_hunde = 0 - def __init__(self, name: str, rasse: str, alter: int, gewicht: float): + def __init__(self, name: str, alter: int, gewicht: float, bellgeraeusch: str): self.name = name - self.rasse = rasse self.alter = alter self.gewicht = gewicht + self.bellgeraeusch = bellgeraeusch Hund.anzahl_hunde += 1 - def __repr__(self): - return f"Hund(name={self.name!r}, rasse={self.rasse}, alter={self.alter}, gewicht={self.gewicht}" + def __repr__(self) -> str: + return f"Hund(name={self.name!r}, rasse={self.__class__.__name__}, alter={self.alter}, gewicht={self.gewicht}" - def __str__(self): - return f"{self.name} ist ein {self.alter}-jähriger {self.rasse}" + def __str__(self) -> str: + return f"{self.name} ist ein {self.alter}-jähriger {self.__class__.__name__}" - def bellen(self, n=1) -> int: - print(n * "Woof! ") + @abstractmethod + def bellen(self, n: int = 1) -> None: + print(" ".join([self.bellgeraeusch] * n)) - def geburtstag(self): + def geburtstag(self) -> None: self.alter += 1 print( f"Alles Gute zum Geburtstag, {self.name}! Du bist jetzt {self.alter} Jahre alt." ) - def ist_welpe(self): + def ist_welpe(self) -> None: if self.alter < 2: print(f"{self.name} ist ein {self.alter}-jähriger Welpe") else: print(f"{self.name} ist ein {self.alter}-jähriger erwachsener Hund") + def __lt__(self, other): # less than: self < other + return self.alter < other.alter -hund1 = Hund(name="Bello", rasse="Pudel", alter=99, gewicht=357) -hund2 = Hund(name="Dewy", rasse="Labrador", alter=-6, gewicht=1) + def __le__(self, other): # less equal: self <= other + return self.alter <= other.alter + + def __gt__(self, other): # greater than: self > other + return self.alter > other.alter + + def __ge__(self, other): # greater equal: self >= other + return self.alter >= other.alter + + def __eq__(self, other): # equal: self == other + return self.alter == other.alter + + +class Pudel(Hund): + def __init__(self, name, alter, gewicht): + super().__init__(name, alter, gewicht, "wau") + + def bellen(self, n=1): + super().bellen(n) + + +class Labrador(Hund): + def __init__(self, name, alter, gewicht): + super().__init__(name, alter, gewicht, "wuff") + + def bellen(self, n=1): + super().bellen(n) + + +class Bulldog(Hund): + def __init__(self, name, alter, gewicht): + super().__init__(name, alter, gewicht, "woff") + + def bellen(self, n=1): + super().bellen(n) + + +hund1 = Labrador(name="Bello", alter=33, gewicht=27) +hund2 = Pudel(name="Dewy", alter=6, gewicht=1) +hund3 = Bulldog(name="Stone", alter=15, gewicht=1000) print(repr(hund1)) print(hund2) hund2.bellen(3) +hund1.bellen(2) hund1.geburtstag() hund2.ist_welpe() hund1.ist_welpe() +hund3.bellen(4) +print(hund3 > hund2)