2016-09-19 2 views
0

Ich versuche Python 3.5.2 xmlrpc.client ServerProxy() zu unterklassifizieren, um seine Kommunikation mit einem XML-Server anzupassen. Ich bin jedoch davon betroffen, wie ServerProxy seine Attribute benennt.Wie ändert Python 3 xmlrpc.client ServerProxy() Objekt dynamisch seine Attribute?

Die Attribute sind ganz klar in ‚xmlrpc/client.py‘ genannt:

class ServerProxy: 
... 
self.__transport = ... 
self.__encoding = ... 
self.__verbose = ... 
... 

Doch wenn ich versuchen, das Objekt interaktiv zu untersuchen, die Objektattribute vorangestellt mit ‚_ServerProxy‘ sind:

import xmlrpc.client 
my_client = xmlrpc.client.ServerProxy('http://01.234.567.890') 

my_client.__dict__ 
Out[3]: 
{'_ServerProxy__allow_none': False, 
'_ServerProxy__encoding': 'utf-8', 
'_ServerProxy__handler': '/RPC2', 
'_ServerProxy__host': '01.234.567.890:8000', 
'_ServerProxy__transport': <xmlrpc.client.Transport at 0x1043c4320>, 
'_ServerProxy__verbose': False} 

Wie/wo im Code wird diese dynamische Umbenennung durchgeführt? Ich dachte Ich verstand __getattr__() und Freunde, aber ich kann nicht für das Leben von mir herauszufinden, wo das passiert ist.

Antwort

1

In CPython passiert es während der Kompilierung in Python/compile.c:_Py_Mangle. Für andere Implementierungen sehen Sie ihren Quellcode.

+0

Ah, Mist. Du hast recht. Ich habe Mangeln vergessen. Du hast recht. Es ist ein Betrogener. Danke Ignacio. –

Verwandte Themen