[python] globální proměnné

p.kosina gen2n na seznam.cz
Pondělí Prosinec 20 09:13:03 CET 2004


Připadá mi to nespravedlivé :-), že u OO se globální proměnné vytváří 
naprosto transparentně self.x=10 v kterékoliv metodě a platnost (včetně 
změn) je napříč celou třídou a ještě je to vydáváno za velké plus.

Naproti tomu u nás, u proceduráků, u nás je global, které se však musí 
objevovat jednak v každé funkci zvlášť, což je velmi netransparentní a 
ještě je to zavrženíhodné. Dá se to samozřejmě obcházet, ale 
transparentnost je vždy přednost. Funkce se dají samozřejmě volat s 
parametry a také vracet výsledky, ale pokud je argumentů více, program 
se stává zbytečně nepřehledným.

Chci uvést jednu z transparentnější metod (možná jsem objevil objevené, 
ale já jsem dosud používal seznamy nebo to hrozné global):

class globalniTrida:
   pass

def r():
   Global.delka=10

Global=globalniTrida()
r()
Global.delka=Global.delka+20
print Global.delka
 >>> 30

Uvnitř definice třídy, když se zavede ještě __init__ s popisem 
globalnich proměnných, tak to ještě na přehlednosti získá.



Další informace o konferenci Python