Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: ole-usenet-spam@gmx.net (=?utf-8?B?0J5s0LUg0IV0ctC10ZbRgWjQtXI=?=) Newsgroups: de.comp.lang.python Subject: "property-init"-decorator Date: Tue, 26 May 2020 17:44:58 +0200 Lines: 34 Message-ID: <875zci8zut.fsf@orrococo> Reply-To: =?utf-8?B?0J5s0LUg0IV0ctC10ZbRgWjQtXI=?= Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: individual.net Q/qDxeNQWVd/Vu/NSpZr4AcvJngZKuS4tR9sypZOnRpOvs963sLd5ZlQ== Cancel-Lock: sha1:VRblIkhkv2kxEa9Sm/8F9AmLLs4= sha1:NLxIVDvmnmac6cQQRnIcj3+07ro= User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) Xref: csiph.com de.comp.lang.python:5634 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