Re: [python] Záměna funkce v instanci objektu

2010-04-20 Tema obsahu 302302
] Záměna funkce v instanci objektu Mám nadefinovanou třídu class tridaA(): def b(self,x): self.x=x vytvořím její instanci a=tridaA() místo metody b, ale chci, aby se vždy v tomto objektu zavolala funkce c, která je nadefinována někde mimo: def c(self, x): self.x = x+1 Pokud to ale

Re: [python] Záměna funkce v instanci objektu

2010-04-20 Tema obsahu Přikryl Petr
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

Re: [python] Záměna funkce v instanci objektu

2010-04-20 Tema obsahu Petr Messner
Existuje jiný způsob, než změna typu za běhu: class A: def b(self, x): self.x = x def c(self): return self.x a = A() a.b(42) assert a.x == 42 class Proxy: def __init__(self, obj): self.__dict__[_obj] = obj def __getattr__(self, name): return

Re: [python] Záměna funkce v instanci objektu

2010-04-20 Tema obsahu Hynek Fabian
302302 (úterý 20 Duben 2010 09:56:14): 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? do metody nic nepřiřadíš, jen nahradíš jeden objekt ve

Re: [python] Záměna funkce v instanci objektu

2010-04-20 Tema obsahu Hynek Fabian
Ještě jsem na to koukal a zjistil jsem zajimavou věc. MethodType a UnboundMethodType jsou tentýž objekt, čili vázané a odvázané metody jsou na oko stejného typu. Typ zkonstruované metody závisí na argumentech: MethodType(funkce, instance) # vrátí vázanou metodu MethodType(funkce, None, třída)

[python] Záměna funkce v instanci objektu

2010-04-19 Tema obsahu 302302
Mám nadefinovanou třídu class tridaA(): def b(self,x): self.x=x vytvořím její instanci a=tridaA() místo metody b, ale chci, aby se vždy v tomto objektu zavolala funkce c, která je nadefinována někde mimo: def c(self, x): self.x = x+1 Pokud to ale pouze