[Python-de] "property-init"-decorator

Gregor Engberding gregor at landit.de
Mi Mai 27 11:04:00 EDT 2020


Hallo allerseits, hallo Ole,

evtl. könnte man das auch mit dem descriptor-protokoll lösen, so ha ich 
das bei einem sehr aufwendigen Projekt gemacht.
Sehr gutes Tutorial (englisch):
https://www.youtube.com/watch?v=sPiWg5jSoZI
update vom selben Autor:
https://www.youtube.com/watch?v=5nXmq1PsoJ0

https://docs.python.org/3/howto/descriptor.html

Dann kannst du sowas machen:
class Foo:
     myprop = Cfg(init=1.23)

Grüße
Gregor


Am 26.05.20 um 17:44 schrieb Оlе Ѕtrеісhеr:
> Hallo,
> 
> wir möchten in einer Klasse eine Reihe von Attributen konsistent
> speichern; d.h. es gibt Beschränkungen für die verschiedenen Attribute.
> Die Idee ist, das durch Properties zu machen:
> 
> Class Cfg:
>      def __init__(self);
>          self._myprop = 1.23
> 
>      [...]
> 
>      @property
>      def myprop(self)
>          return self._myprop
> 
>      @myprop.setter
>      def myprop(self, val):
>          if val > self._maxprop: # als Beispiel
>              raise ValueError()
>          self._myprop = val
> 
> 
> Das Unschöne daran ist, dass die Initialisierung der Property im
> __init__ und damit physisch weit entfernt vom Rest erfolgt. Das ist,
> wenn man viele (>>20) Attribute hat, nicht mehr übersichtlich.
> 
> Wie bringt man die enger zusammen? Ein @myprop.init gibt es ja
> offensichtlich nicht und kann man auch nicht so ohne weiteres anlegen,
> oder? Oder was wäre ein sinnvolles Pattern hier?
> 
> Schöne Grüße
> 
> Ole
> _______________________________________________
> python-de maillist  -  python-de at python.org
> https://mail.python.org/mailman/listinfo/python-de
> 


Mehr Informationen über die Mailingliste python-de