2016-09-19 54 views
0

我想要繼承Python 3.5.2的xmlrpc.client ServerProxy()以便自定義其與XML服務器的通信。但是,我受到ServerProxy如何命名其屬性的阻礙。Python 3的xmlrpc.client ServerProxy()對象如何動態重命名它的屬性?

屬性在「XMLRPC/client.py」命名的很清楚:

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

然而,當我嘗試以交互方式檢查對象,該對象的屬性是預先計劃與「_ServerProxy」:

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} 

代碼中是如何/在哪裏進行這個dynamica重命名?我想到我理解__getattr__()和朋友,但我不能爲我的生活找出這發生的地方。

回答

1

在CPython中它發生在編譯Python/compile.c:_Py_Mangle。對於其他實現請參閱它們的源代碼。

+0

啊,廢話。你是對的。我忘了搗鼓。你是對的。這是一個騙局。謝謝Ignacio。 –