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) -- http://mail.python.org/mailman/listinfo/python-list