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:302...@centrum.cz]
Komu: python <python@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@py.cz
http://www.py.cz/mailman/listinfo/python
_______________________________________________
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python
--
____________________________
Ing. Jan Janech
Katedra softverovych technologii
Fakulta riadenia a informatiky
Zilinska Univerzita
_______________________________________________
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python