Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Hermann Riemann Newsgroups: de.comp.lang.python Subject: Re: [Python-de] __init__ ? Date: Thu, 2 Nov 2017 15:51:09 +0100 Lines: 60 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: individual.net dLSnQS9WUYs4ic+CfGFwqQZD4pMn+KczxJ9kJcWxoxvjOJVG/m Cancel-Lock: sha1:qVFeVk+XQ6UvPK/XeP7YFOxc6Ko= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 In-Reply-To: Content-Language: de-DE Xref: csiph.com de.comp.lang.python:4999 Am 02.11.2017 um 15:22 schrieb Thomas Güttler: > Prinzipel geht das, aber bei Datentypen die mutable sind (zB Listen) kann > es zu Konsequenzen kommen, die du ggf nicht haben willst. > class Foo(): > my_list = [] > Dann teilen sie alle Instanzen der Klasse die gleiche Liste. > Also bei > foo= Foo() > foo.my_list.append(1) > foo2 = Foo() > foo2.append(2) > print foo2 > > wirst du ggf erstaunt sein. > >> Am 02.11.2017 um 15:09 schrieb Hermann Riemann: >>Bisher habe ich etwas wie >> class Cl(): >> def __init__(self): >> self.x=1 >> gemacht. >> So wie das in Buecher ueblich ist. >> In einer raspberry pi Zeitschrift habe ich gesehen >> dann man stattdessen auch >> class Cl(): >> x=1 >> schreiben kann. >> Hat funktioniert. >> ( mit c=Cl(); print(c.x); c.x=2; print(c.x) ) >> fragend ob er jetzt viele __init__ >> bedenkenlos ersetzen kann. Dein Schreiben hat mich zu c1=Cl(); print(c1.x) motiviert. Ergebnis war 2. Also ohne __init__ haben die Variablen für alle angelegte Objekte den gleichen Speicherplatz, die bei der Klassendefinition angelegt werden. Hermann der diese Art von Anlegen globaler Variable bisher nicht sonderlich mag. -- http://www.hermann-riemann.de