On 28 nov, 14:58, George Sakkis <[EMAIL PROTECTED]> wrote: > On Nov 28, 5:36 am, manatlan <[EMAIL PROTECTED]> wrote: > > > > > 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) > > Why don't you rename __call__ to __str__ and have MyObject.__add > return a string instead of printing it directly? > > class MyObject(object): > def __add(self,j): > return "Add:"+j > > if __name__ == "__main__": > o = MyObject() > s = o.js.kiki(12).kuku() > print s > > HTH, > George
sure, it works like you said ... but it's not what I want. by doing that, you create an action ... when you will call "print" it will call the __str__ (__repr__ is better in that case), which will call the callback of myobject. In my preceding post, the action was called by the "()" trick at the end of line In fact, MyObject will handle a list of all "js call" If i do : o.js.toto() o.js.toto().titi(12,13) I'd like my MyObject contains a list like that ["toto()","toto().titi (12,23)"] another idea ? -- http://mail.python.org/mailman/listinfo/python-list