On 2012-10-05 16:43, Maurizio Totti wrote:
Ciao,
sono (da sempre) alle prime armi con Python e vorrei estendere la
classe xmlrpclib.ServerProxy della libreria xmlrpclib (per usare un
proxy http se definito sulla mia linuxbox), ma sbaglio qualcosa.
Per esempio se provo anche solo a fare così:
Python 2.7.3rc2 (default, Apr 22 2012, 22:30:17)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more
information.
import xmlrpclib
class Pluto(xmlrpclib.ServerProxy):
... def __init__(self, *args, **kw):
... super(Pluto, self).__init__(self, *args, **kw)
Nota che dovrebbe essere
super(Pluto, self).__init__(*args, **kw)
ma non è questo il problema.
b = Pluto("http://127.0.0.1/blog/xmlrpc.php")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in __init__
TypeError: must be type, not classobj
Cercando a giro ho trovato questo
http://stackoverflow.com/questions/489269/python-super-raises-typeerror-why
e mi è venuto il dubbio che potrebbe dipendere anche da com'è fatta
xmlrpclib... O forse ho semplicemente sbagliato :-)
Sì, il motivo è quello: è una classe "vecchio stile". Non supporta
super (e non si comporta in maniera educata con l'ereditarietà
multipla): devi usare
xmlrpclib.ServerProxy.__init__(self, *args, **kw)
(questa volta il self lo devi passare esplicito, non come col super())
--
Daniele Varrazzo - Develer S.r.l.
http://www.develer.com
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python