Czenek napsal > Ano, mělo by to být dynamické. A vaše řešení > se mi líbí. Jenom nechápu proč to nelze udělat > tím prostým přiřazením? Co se tedy vlastně > stane, když do metody nějakého objektu přiřadím > novou funkci?
Zkus tenhle kód (tedy hlavně poslední tři řádky): class tridaA: def b(self, x): self.x = x def c(self, x): self.x = x + 1 a = tridaA() print type(a.b) a.b = c print type(a.b) Vypíše to: <type 'instancemethod'> <type 'function'> To znamená, že nejdříve bylo a.b metodou instance, ale po přiřazení je to obyčejná funkce. a.b je jen jméno. Původně ukazuje na objekt metody. To znamená, že se taky jako metoda používá. Po přiřazení se jméno a.b použije pro jiné účely. Je pak spojeno s odkazem na obyčejnou funkci. Že se zrovna první parametr jmenuje self není vůbec podstatné. Dokonce i u metod je toto jméno jen konvencí. Něco jiného je, kdybys za běhu potřeboval přehazovat jen metody stejné třídy. Zkus tohle: class tridaA: def __init__(self): self.m = self.b def b(self, x): self.x = x def c(self, x): self.x = x + 1 a = tridaA() a.m(1) print a.x a.m = a.c a.m(3) print a.x Volá se pokaždé a.m, ale ta pokaždé dělá něco jiného. pepr
_______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python