Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Peter Otten <__peter__@web.de> Newsgroups: de.comp.lang.python Subject: Re: [Python-de] "property-init"-decorator Date: Sun, 31 May 2020 15:37:12 +0200 Organization: None Lines: 46 Message-ID: References: <875zci8zut.fsf@orrococo> <4719790.vIyLdRSyTD@palindrom> <9d687032-db10-2482-9455-540de7c9a3a4@goebel-consult.de> <2456739.UVeabOu3e6@palindrom> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Trace: news.uni-berlin.de LBWO/vHrYhjMQlgxguQCcQcUGidczjI73rh5lizB+9mw== Return-Path: <__peter__@web.de> X-Original-To: python-de@python.org Delivered-To: python-de@mail.python.org Authentication-Results: mail.python.org; dkim=pass reason="1024-bit key; unprotected key" header.d=web.de header.i=@web.de header.b=iDcRiKop; dkim-adsp=pass; dkim-atps=neutral DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1590932263; bh=wEEXUr3xs8WxjOW0UeGFAgi4C382ctcf4/m/M906Xps=; h=X-UI-Sender-Class:From:To:Subject:Date:In-Reply-To:References; b=iDcRiKopsyqkOXKRqDdVvNWUKUy+VDm0yClW3eWEGHQwCYoZg7SEp013zoxRqyXxb 9+u/KdOkIvdb6LgLTqjwXlrhGcKK4OZ9iYo79Nc9VoRsyfj3+JStqbR9BO8Ktw3slR avA3YJlIjUvagKZADGDnMIEzMa1+nhoAnQNRjzSM= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 User-Agent: KMail/4.13.3 (Linux/3.13.0-170-generic; KDE/4.13.3; x86_64; ; ) In-Reply-To: <9d687032-db10-2482-9455-540de7c9a3a4@goebel-consult.de> X-Provags-ID: V03:K1:6HV9uWWBWuPf45Hn8Hn86keJw1rqS1EN30GITUQbzWKJPWlT1cJ R/AVxj1i8cy6+QNpRDqqnZ+Z0eQI4JkCvgxnd/xUksz2DbvfFsNM35dJlNGcL/hU8jrgI+i jT/mQ4d+8Jl++GME0mVtwH1+i+efirYe0csO77qZb6u0H5lf48pNtEgKIcnvI9PjhB78+yG 6wTa7KBmvnHUtZx7akgTQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:Gljqzes3/U0=:LpBO4++UU2/PUXXswpnvht /Ee4/U7BY4IMjYCpRp0Eyyfb85vo0KnIO0LRQWgYXGV4bopOGn7qRGC/G8EBrH4LV99rgiW70 6OCBNp4ALCGTIAsXu+y2m5nsJ9gZwhwDMWZSA9z2k1dLK8TwyENG1gF3LsW/HgI8/ynaDO0ge d90M+3sgdQpl46c81AowoQzj0J7dG2pgGNYjjw9zOmLyH4AFR8I+57kitx3D31ahfHrtMMJox wO+S1jYHFr5MFet07tfL4EGadbcTYVo8lcOObN68RMiWhG2y4aa7NRa9GmAkd65vMGwz9uGUh r0229vluxe2XbU91Xzivt2barnO7BikEM/HqS15fAa8DGLHGjBaTK4jtPRXnM2j3U+ieVKANj +uUFVgCT0q/qVEQioDnTld0mdniGJpoUIBRgiHEbkf02BXq0B5qjE2WZW0MkhoC9wpBYpeq1z VUqTRJU2yeyknlBJpklMXattCrmEd47cUdxze4pAAEoRBfN3Y9WRzpirBlWmoSeSuA1IyDGDE 4wPziY5qBQXBRD4x7isV1X6NhiNXwjjzFC8xht8WrBa2VJlLuVoGAI/GOdVaSOTJ1jRTGjGBb SCaYC4OJ56aX7pE+He44sWgIb1Z8HBbFZSyxnWdO5lbTeqXVmyqTrsVG6lPzBEfvZR5cSnDs8 saUADbK2lhIf7DygUUgLOBQbmPwoUZZI0tbrsdXQzxymS3rGRDdyj51gtdyR2mW7cKElP0dFp lim4pH2d5OG+kL5AQLuUhAl8uZ1asiT0Z0rL71czGgad/T3AWgRTV1xx6fqkm3dRpP398U5SO TFT6bCeeiH0V3bqatMrnTAzRyoaaMWZvUes8ctMQYig0g2dl3PaMSwhQFcYyDYIUpDkfJsqUL GNtqApS08pHKbCs8YH1h7GxqRm4KduE+MPrMlLAjJOFBymB2ww63wuXqb6issPRPka8zrUrAv C8fQ88EiBIVqwyJGSEeUa2fQsfkJa7pXKvksV/MUHGT9Zhg6wU1Nb7Q5TMnmCy5pGv1nuqkP9 vB0Pvc9kWA93GdNrz74Wg4YhXdXvyB2tqFW44Gv8peioiaD3muFWqNaWorRH1YbisXNgcBjKJ n2655xXT+vcvoIzxLNKaucGT3OU8djjeJj8Hl0FXtrfjFH6MH/sVLFfoZSqZSRduafidrPRjp PyhUi5/QT0DLMGE0OmRngFWbJjByFX89GYrABpFvJrlXE1bnGAiENXa5QvIqlmRqzgX14g/HK jgQCQdez3J0RZRlTR X-BeenThere: python-de@python.org X-Mailman-Version: 2.1.33 Precedence: list List-Id: Die Deutsche Python Mailingliste List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: <2456739.UVeabOu3e6@palindrom> X-Mailman-Original-References: <875zci8zut.fsf@orrococo> <4719790.vIyLdRSyTD@palindrom> <9d687032-db10-2482-9455-540de7c9a3a4@goebel-consult.de> Xref: csiph.com de.comp.lang.python:5641 Am So Mai 31 2020, 10:13:43 schrieb Hartmut Goebel: > Am 27.05.20 um 17:13 schrieb Peter Otten: > > Die Reihenfolge kann durch die Positionierung in der Klasse bestimm= t werden: > K=C3=B6nnte man machen, allerdings w=C3=BCrde ich mich nicht darauf v= erlassen, > dass die Reihenfolge in `vars(A).keys()` immer stimmt. Kannst Du mit > eine Doku dazu zeigen, ich habe nichts gefunden. Was Knackiges kann ich auch nicht vorweisen, nur https://docs.python.org/3/whatsnew/3.6.html#pep-520-preserving-class-at= tribute-definition-order mit dem Verweis auf die PEP 520 =E2=80=93 Preserving Class Attribute Definition Order https://www.python.org/dev/peps/pep-0520 bei deren Enstehung wohl noch nicht bekannt war, dass `dict`s die insertion order erhalten. > Allerdings hat mich Deine Mail noch auf einen ganz anderen Ansatz geb= racht: >=20 > class A: > _myprop =3D 1.23 >=20 > @property > def myprop(self): > return self._myprop >=20 > @myprop.setter > def myprop(self, value): > if value < 2.5: > self._myprop =3D value >=20 > a =3D A() > print(a.myprop) > a.myprop =3D 2.1 > print(a.myprop) Das hat den Vorteil, dass man sich nur auf Standard-Konstrukte verl=C3=A4= sst. F=C3=BCr mutable defaults muss man das allerdings modifizieren.