M
manatlan
I'd like to make a "jquery python wrapper" ...
here is my code :
===================================================================
#!/usr/bin/env python
# -*- coding: utf-8 -*-
class JQueryCaller(object):
def __init__(self,callback):
self.__callback=callback
self._s=[]
def __getattr__(self,name):
def _caller(*args):
sargs=["'%s'"%i for i in args]
self._s.append("%s(%s)"%(name,",".join(sargs)))
return self
return _caller
def __call__(self):
return self.__callback(".".join(self._s))
class MyObject(object):
def __init__(self):
self.js = JQueryCaller(self.__add)
def __add(self,j):
print "Add:"+j
if __name__ == "__main__":
o=MyObject()
o.js.kiki(12).kuku()()
===================================================================
If i run the script : it will display :
Add:kiki('12').kuku()
Because the JQueryCaller caller is called, by the "()" trick at the
end of the last line
I'd like to display the same thing, but without the need to put the
"()" at then end !
(by calling simply : "o.js.kiki(12).kuku()" not "o.js.kiki(12).kuku()
()")
(or how to call the MyObject._add (callback) without using the caller
on my JQueryCaller)
Really needs some help ... and it's a great exercise too ;-)
(3 hours on that, and don't find a way to resolve that, because I
can't find a way to terminate the recursivity in the getattr way)
here is my code :
===================================================================
#!/usr/bin/env python
# -*- coding: utf-8 -*-
class JQueryCaller(object):
def __init__(self,callback):
self.__callback=callback
self._s=[]
def __getattr__(self,name):
def _caller(*args):
sargs=["'%s'"%i for i in args]
self._s.append("%s(%s)"%(name,",".join(sargs)))
return self
return _caller
def __call__(self):
return self.__callback(".".join(self._s))
class MyObject(object):
def __init__(self):
self.js = JQueryCaller(self.__add)
def __add(self,j):
print "Add:"+j
if __name__ == "__main__":
o=MyObject()
o.js.kiki(12).kuku()()
===================================================================
If i run the script : it will display :
Add:kiki('12').kuku()
Because the JQueryCaller caller is called, by the "()" trick at the
end of the last line
I'd like to display the same thing, but without the need to put the
"()" at then end !
(by calling simply : "o.js.kiki(12).kuku()" not "o.js.kiki(12).kuku()
()")
(or how to call the MyObject._add (callback) without using the caller
on my JQueryCaller)
Really needs some help ... and it's a great exercise too ;-)
(3 hours on that, and don't find a way to resolve that, because I
can't find a way to terminate the recursivity in the getattr way)