Sinn von @property bei gettern / settern
Verfasst: Montag 6. November 2017, 16:27
Hallo Forum,
bzgl. des Einsatzes von property bei gettern/settern fehlt mir aktuell das Verständnis, wozu dies gut sein soll, resp. wo ich einen Vorteil bekomme.
Klassisch würde ich eine Klasse z.B. wie folgt aufbauen & nutzen:
Mit der Property-Funktionalität sieht es dann so aus:
Der Unterschied besteht so weit ich erkennen kann nur darin, dass ich mit property nun ein Attribut "direkt" aber geschützt anzusprechen kann und im klassischen Fall über die Setter/Getter-Methoden gehen muss. Kann es sein, dass ich was übersehe? Denn wenn das alles ist... wozu der Aufwand?
Danke und Grüße
bzgl. des Einsatzes von property bei gettern/settern fehlt mir aktuell das Verständnis, wozu dies gut sein soll, resp. wo ich einen Vorteil bekomme.
Klassisch würde ich eine Klasse z.B. wie folgt aufbauen & nutzen:
Code: Alles auswählen
class Cat():
def __init__ (self, name = "Lucy", gewicht = "8", hoehe = "21"):
self.__name = name
self.__gewicht = gewicht
self.__hoehe = hoehe
def run(self):
print("{} rennt los".format(self.__name))
# Getter und Setter
def setname(self, name):
print("ok {} hört zukünftig auf den neuen Namen {} ".format(self.__name, name))
self.__name = name
def getname(self):
return self.__name
# weitere Methoden sowie getter & setter analog
def main():
Lissy = Cat("Lissy", 9, 22)
Lissy.run()
Lissy.setname("Jaqueline")
Lissy.run()
main()
Code: Alles auswählen
class Dog():
def __init__ (self, name = "Whiskey", gewicht = "12", hoehe = "21"):
self.__name = name
self.__gewicht = gewicht
self.__hoehe = hoehe
def run(self):
print("{} rennt los".format(self.__name))
# getter & setter
@property
def name(self):
return self.__name
@name.setter
def name(self, value):
if value.isalpha():
self.__name = value
else:
print("Error")
# weitere Methoden sowie getter & setter analog
def main():
Jack = Dog("Jack")
Jack.run()
Jack.name = "Jonas"
Jack.run()
main()
Danke und Grüße