[Python-de] Styleguide: Properties

Harald Armin Massa haraldarminmassa at gmail.com
Sam Okt 29 10:01:49 CEST 2005


Andi,


ob getter und setter privateFunktionen sein sollten


getter und setter verdienen keine Diskussion, die stammen aus einer anderen
Welt. In Python ist die Grundregel: wir sind alle erwachsen.

Also nix mit
class fisch:
getwilli(self,willi):
return willi

sondern:
whatever=fisch.willi

direkter Attributzugriff. Und gut ist. WENN irgendwann der THEORETHISCHE
Fall eintritt, daß das nimmer ein simples dict-lookup ist, sondern eine
Funktion oder ein Webservice (jaaa, auch ich habe die ganzen
Kapselungstheorien gelesen), DANN, und genau DANN, und KEINE SEKUNDE FRÜHER,
wird mit property diese Möglichkeit geschaffen.

Für mich ist es so: mit Python programmiere ich für das Leben wie es ist;
was auch eine ZEN-Ansicht ist. Nicht für eine Welt, wie sie sein sollte :)


Interne Initialisierung:
> proc = Procedure("foo")
> proc.args[0] = "arg1"
> proc.args[1] = "arg2"
>

Hmmm... die Instanzvariablen einer gewöhnlichen Python-Klasse liegen in
einem gewöhnlichen Dictionary.

Also:

class fisch:
pass

fisch.schuppe=True
fisch.farbe="schwarz"

ergibt dann, daß fisch.__dict__ die schuppe und die farbe enthält (+ ein
paar innereien)

Welchen konkreten Vorteil erhoffst Du Dir dadurch, daß Du NOCHMALS so ein
Dictionary machst? Es ist keinen Deut sicherer, es ist langsamer und braucht
mehr Zeichen beim Tippen. Wenn irgendjemand MÜLL in Dein ___args schiebt,
geht das Programm genauso vor die Hunde wie wenn jemand das __dict__ des
Objekts versaut.

Meine Empfehlung daher:
#define private public

und schau nach, ob die Welt untergeht. Wenn nicht, ist all das private für
nüscht.

Lieber Gruß

Harald




--
GHUM Harald Massa
persuasion python postgresql
Harald Armin Massa
Reinsburgstraße 202b
70197 Stuttgart
0173/9409607
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: http://starship.python.net/pipermail/python-de/attachments/20051029/de261cd0/attachment.htm