[python] Záměna funkce v instanci objektu
Jan Janech
devel na atlas.sk
Úterý Duben 20 09:14:33 CEST 2010
Popripade, ak to treba spravit dynamicky, tak
a=tridaA()
....
a.__class__ = tridaA2
ak tridaA2 pre nieco neexistuje, da sa spravit:
# c je funkcia, ktora sa ma pouzit ako metoda a.b
a.__class__ = type('tridaA', (tridaA, ), {'b': c})
v tom pripade ale musi byt tridaA definovana ako new-style class, teda
musi dedit po object.
Jan Janech
azurIt wrote:
> V pripade, ze ta nova funkcia bude vzdy rovnaka, tak sa toto riesi proste dedenim:
>
> class tridaA:
> def b(self, x):
> self.x = x
>
>
> class tridaA2(tridaA):
> def b(self, x):
> self.x = x + 1
>
>
> a=tridaA2()
>
>
>
>> -----Pôvodná správa-----
>> Od: 302302 [mailto:302302 na centrum.cz]
>> Komu: python <python na py.cz>
>> Predmet: [python] 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 pouze přiřadím a zavolám
>>
>> a.b=c
>> a.b(1)
>>
>> tak se do parametru self automaticky nepřiřazuje daný objekt a.
>>
>> Jak můžu zaměnit funkce ve vytvořené instanci objektu, aby se to chovalo jako běžná metoda?
>>
>> Czenek
>> _______________________________________________
>> Python mailing list
>> Python na py.cz
>> http://www.py.cz/mailman/listinfo/python
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>
>
--
____________________________
Ing. Jan Janech
Katedra softverovych technologii
Fakulta riadenia a informatiky
Zilinska Univerzita
Další informace o konferenci Python