@efix: Es werden auch die Funktionen `input()` und `float()` beim Initialisieren benutzt, die sind ja auch nicht in der Klasse definiert. Und falls Du eine weitere Klasse schreibst, wo der Benutzer Zahlen eingeben muss, dann müsstest Du dort nach der Logik die gleiche ”Methode” noch mal schreiben, statt dass Du bereits eine Funktion hast, die in beiden Klassen benutzt werden kann.
Es gibt seltene Fälle in denen eine Funktion so stark an eine Klasse gebunden ist, dass man sie als „statische Methode“ in die Klasse schreibt. Dann aber auch ohne das unbenutzte `self` und mit `staticmethod()` dekoriert.
Es ist übrigens auch ungewöhnlich Benutzerinteraktion in eine `__init__()` zu stecken. Überhaupt hält man die `__init__()` oft eher schlank/dumm, weil es das Testen und in anderen Kontexten verwenden einfacher macht, wenn sich leicht Exemplare erstellen lassen ohne zu viele Abhängigkeiten ”nach draussen” zu haben, also insbesondere Eingaben, aber auch Ausgaben.
Aufbauend auf dem Beispiel von Sirius3 beispielsweise:
Code: Alles auswählen
#!/usr/bin/env python3
def get_number():
return float(input("Geben Sie eine Zahl ein: "))
class Calculation:
def __init__(self, number_a, number_b):
self.number_a = number_a
self.number_b = number_b
def main():
calculation = Calculation(get_number(), get_number())
print(calculation.number_a)
if __name__ == "__main__":
main()