[python] pspad kompilace

Stepan stepan.wagner na gmail.com
Čtvrtek Červen 19 23:02:36 CEST 2008


hmm normalne s takovymi konstrukcemi pracuji; mam jednu metodu a vim ze:

 

jmeno()...vypise jmeno

jmeno(value)...nastavi jmeno

 

nevidim v tom velky problem.

 

Stepan

 

 

  _____  

From: python-bounces na py.cz [mailto:python-bounces na py.cz] On Behalf Of Jan
Bednařík
Sent: Thursday, June 19, 2008 10:14 PM
To: Konference PyCZ
Subject: Re: [python] pspad kompilace

 

Dne 19. červen 2008 10:56 BoneFlute <boneflute na taco-beru.name> napsal(a):

Jakub napsal(a):


>     def jmeno(self, nazev=None):
>         if nazev == None:
>             print self.nick
>         else:
>             self.nick=nazev



Mimochodem, má někdo zkušenosti proč se používá takováto konstrukce
nastavování proměnné?
Přiznávám, že jsem si tím také prošel, ale posléze opustil. Jednak to
subjektivně není moc přehledné, druhak je to silný nezvyk proti
zaběhnutým coding standards - zvláště když má python docela propracovaný
 systém přetěžování přiřazování atributů a properties.

Zajímalo by mě, zda to má nějaké praktické výhody.


Je to prasečina a rozhodně bych se toho vyvaroval. Jednak pokud po vytvoření
instance třídy zavoláš tu metodu bez parametru, nebo z jakéhokoliv důvodu
(chyba na vstupu nebo bug jinde) jako název pošleš hodnotu None, tak se to
bude snažit vypsat neexistující proměnou (self.nick) => AtributeError. A i
kdyby self.nick už existoval, to zavolání s hodnotou None způsobí
neočekávané chování (print, nebo jindy return), které může způsobit spoustu
těžko dohledatelných bugů.

Honza

------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://www.py.cz/pipermail/python/attachments/20080619/e6cbdaba/attachment.htm 


Další informace o konferenci Python