Hoi
ik heb een classe:
wat ik dus wil is dat doh.wannagethere wordt aangeroepen met adata die 'mama'.
hier emuleer is die 'onsomecallback' maar in mijn programma wordt die ergens aangeroepen.
ik wil nu afhankelijk waar ik zit in mijn code mijn eigen handler daarvoor in de plaats zetten (nee ik kan de originele handler niet aanpassen). maar ik snap totaal niet hoe je in python zoiets als functions object moet doorgeven en nog belangrijker hoe ik die dan zelf kan aanroepen in de juiste scope.
aangezien de origenele callback iets is van:
someobject.sethandler(p.onsomecallback) weet ik dat het kan maar omdat ik niet weet hoe dat specifiek noemt levert google alleen maar 'C' callback etc op...
Tis iets simpel maar ik vind veel simpele dingen in python (zoals een for met i =0
of (een switch statement) nogal onsprekelijk moeilijk.. (zwijg me nog maar over de caps in True en False).
Ps de code hierboven werkt dus niet
ik heb een classe:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| class doh:
def setcallback(self, afunc):
self.callfunc = afunc
def onsomecallback(self, adata):
if(self.callfunc):
self.callfunc(adata)
def wannagethere(self, adata):
print adata
d = doh()
d.setcallback(d.wannagethere)
...
d.onsomecallback("mamamia wat is dit moeilijk") |
wat ik dus wil is dat doh.wannagethere wordt aangeroepen met adata die 'mama'.
hier emuleer is die 'onsomecallback' maar in mijn programma wordt die ergens aangeroepen.
ik wil nu afhankelijk waar ik zit in mijn code mijn eigen handler daarvoor in de plaats zetten (nee ik kan de originele handler niet aanpassen). maar ik snap totaal niet hoe je in python zoiets als functions object moet doorgeven en nog belangrijker hoe ik die dan zelf kan aanroepen in de juiste scope.
aangezien de origenele callback iets is van:
someobject.sethandler(p.onsomecallback) weet ik dat het kan maar omdat ik niet weet hoe dat specifiek noemt levert google alleen maar 'C' callback etc op...
Tis iets simpel maar ik vind veel simpele dingen in python (zoals een for met i =0
Ps de code hierboven werkt dus niet