Python 3的xmlrpc.client ServerProxy()对象如何动态地重命名它的属性?

时间:2016-09-19 23:28:05

标签: python python-3.5

我试图将Python 3.5.2的xmlrpc.client ServerProxy()子类化,以便自定义与XML服务器的通信。但是,我对ServerProxy如何命名其属性感到不安。

属性在&x; 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}

代码是如何/在哪里进行动态重命名?我思考我理解__getattr__()和朋友,但我不能为我的生活找出这种情况发生的地方。

1 个答案:

答案 0 :(得分:1)

在CPython中,它发生在Python/compile.c:_Py_Mangle的编译过程中。对于其他实现,请参阅其源代码。