[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