> Dle meho skromneho nazoru M.b chybou je, ale z jineho duvodu. > Dovolim si civotat Python reference manual: > > Variables defined in the class definition are class variables; they are > shared by all instances. To define instance variables, they must be > given a value in the __init__() method or in another method. Both class > and instance variables are accessible through the notation > ``self.name'', and an instance variable hides a class variable with the > same name when accessed in this way. > > Dulezita je veta "Jak tridni, tak i instancni promenne jsou pristupne > pomoci zapisu ''self.jmeno'' ... > > Takze, kdyz zmenite M.b na self.b, docilite pozadovaneho efektu. > > slacker >
Nemůžu změnit M.b na self.b především kvůli tomu, že bych pak nemohl demonstrovat to podivné chování v Pythonu ;-) Nevím, jestli si rozumíme, ale odkaz na M.b určitě není nesprávný zápis, jedná se o objekt patřící ke třídě. Není to totéž co self.b, ačkoli se to tak zezačátku (kvůli prohledávání jmenných prostorů) může zdát. Například tento program class M: b = 10 def __init__(self): self.b += 1 # což není totéž co self.b.__add__(1) def __del__(self): print self.b # Objekt instance print M.b # Objekt třídy a1 = M() by měl vypsat 11 10 ale místo toho napíše 11 a pak spadne. Tedy alespoň u mě ;-) -- Jan Martinek _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python