Seite 1 von 1
@ vor Methoden
Verfasst: Mittwoch 1. April 2020, 17:24
von egon11
Ich habe des öfteren ein @ im Zusammenhang von setter und getter Methoden gesehen.
Z:B.
Was macht das genau, konnte dazu nichts wirklich aufschlussreichen finden.
Re: @ vor Methoden
Verfasst: Mittwoch 1. April 2020, 18:13
von kbr
Die zugehörigen Stichworte heissen Properties und Dekoratoren.
Re: @ vor Methoden
Verfasst: Mittwoch 1. April 2020, 19:03
von __blackjack__
@egon11: Wo hast Du denn gesucht? `property()` ist dokumentiert. Da steht dann auch das man es als Decorator verwenden kann und ein Beispiel mit dem @. Das Wort „decorator“ ist ein Link zum Glossar-Eintrag, wo das kurz erklärt wird, mit Beispiel wie der gleiche Code ohne Decorator aussehen würde, und es gibt Links zur Dokumentation von Funktions- und Klassemdefinitionen wo auch noch mal etwas dazu steht.
Zu den letztgenannten Links kommt man auch über den Index wenn man dort den"@"-Eintrag sucht.
Re: @ vor Methoden
Verfasst: Samstag 4. April 2020, 07:30
von egon11
Vielen Dank.
Aber was ich noch nicht verstehe, warum funktioniert
Code: Alles auswählen
class P:
def __init__(self,x):
self.__x = x
def getX(self):
return self.__x
def setX(self, x):
self.__x = x
o = property(getX)
print(P(2).o)
aber nicht wenn ich einfach statt property die Methode selbst aufrufe?
Code: Alles auswählen
class P:
def __init__(self,x):
self.__x = x
def getX(self):
return self.__x
def setX(self, x):
self.__x = x
o = getX
print(P(2).o)
Re: @ vor Methoden
Verfasst: Samstag 4. April 2020, 07:44
von sls
@egon11: weil du die Methode im zweiten Beispiel nicht aufrufst, sondern nur an `o` zuweist.
Re: @ vor Methoden
Verfasst: Samstag 4. April 2020, 07:52
von egon11
Also ruft property im Prinzip nur die Methode auf?
Re: @ vor Methoden
Verfasst: Samstag 4. April 2020, 08:00
von sls
egon11: `property` ist für einen sogenannten Datendeskriptor gedacht der Funktions / Methodenaufrufe auslöst wenn du auf ein entsprechendes Attribut zugreifst.
Vielleicht solltest du gleich die Dokumentation bemühen, da wird das besser beschrieben:
https://docs.python.org/3/howto/descrip ... properties