Am Sonntag 12 Juni 2011, 20:52:03 schrieb Diez B. Roggisch:
On Jun 12, 2011, at 8:40 PM, Andreas Jung wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Seltsame Frage....bei XML-RPC werden immer noch Methoden mit einer festen Signatur aufgerufen und der Client muss die Parameter analog call-by-value übergeben. Wieso willst Du also hier ein Objekt reinstecken...sorry, das macht keinen Sinn im Kontext von XML-RPC.
Macht es sehr wohl, wenn man die Frage wirklich gelesen haette. Plus die Doku.
Florian ist auf der Suche nach einer customisierten Serialisierung/De-Serialisierung von Objektzustaenden. Da geht es nicht um irgendwelche Methodenaufrufe von durch die Gegend gereichten Objektreferenzen...
Genau.
Leider scheint es nicht moeglich zu sein mittels zB des Pickle-Protokolls "dazwischenzugraetschen".
Schade.
@Florian
Unter Umstaenden koennte dir JSON hier helfen. Das built-in-json erlaubt naemlich sowas. Du muesstest fuer deine entsprechenden Typen eine Serialisierung progarmmieren, zB indem du auf eine Methode wie __json__ zurueckgreifst, die dann zB so aussieht:
class Foo(object):
def __json__(self): res = { some_property : self.some_property } res.update(self.__dict__) return res
Dann musst du in jeder XMLRPC-Methode/Funktion den Rueckgabewert "jsonifizieren". Das kann man zB durch einen Dekorator vereinfachen, oder gar einer Metaklasse.
Eine interessante Methode. Für *mein* Problem vom Implementierungsaufwand allerdings in keinem Verhältnis zur Größe des Problems. Hinzu kommt, dass ich von einem existierenden Server ableite und das Protokoll um einige Methoden erweitere. Diese sollten sich aber einfügen in die vorhandene API. Ich werde wohl einfach statt def xml-method(self): return object ein return object.some_dict_representation() machen. Grüße, Florian