首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果不使用dir(),如何获得xmlrpclib.ServerProxy()的方法列表?

如果不使用dir(),如何获得xmlrpclib.ServerProxy()的方法列表?
EN

Stack Overflow用户
提问于 2013-06-27 23:16:32
回答 2查看 9.1K关注 0票数 3

我无法获得xmlrpclib.ServerProxy()上的方法列表。我尝试过使用dir();但是,解释器一直返回错误。

这是我尝试过的:

代码语言:javascript
复制
>>>s = xmlrpclib.ServerProxy("http://192.168.1.72:8888")
>>>dir(s)

我得到了这个错误:

代码语言:javascript
复制
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/xmlrpclib.py", line 1224, in __call__
 return self.__send(self.__name, args)
File "/usr/lib/python2.7/xmlrpclib.py", line 1578, in __request
 verbose=self.__verbose
File "/usr/lib/python2.7/xmlrpclib.py", line 1264, in request
 return self.single_request(host, handler, request_body, verbose)
File "/usr/lib/python2.7/xmlrpclib.py", line 1297, in single_request
 return self.parse_response(response)
File "/usr/lib/python2.7/xmlrpclib.py", line 1473, in parse_response
 return u.close()
File "/usr/lib/python2.7/xmlrpclib.py", line 793, in close
 raise Fault(**self._stack[0])

xmlrpclib.Fault: <Fault 1: '<type \'exceptions.Exception\'>:method "__dir__" is not supported'>

不支持Dir(),如何获取方法列表?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-27 23:38:54

我可能错了,但我怀疑您真正想要的是远程系统支持的方法,这些方法将被代理(按需)到本地对象。

如果服务器支持XML自检API,您可以使用ServerProxy.system.listMethods()方法...

代码语言:javascript
复制
>>> s = xmlrpclib.ServerProxy("http://192.168.1.72:8888")
>>> s.system.listMethods()
票数 9
EN

Stack Overflow用户

发布于 2013-06-27 23:30:34

代码语言:javascript
复制
>>> import xmlrpclib
>>> dir (xmlrpclib.ServerProxy)
['_ServerProxy__close', '_ServerProxy__request', '__call__', '__doc__', '__getattr__', '__init__', '__module__', '__repr__', '__str__']

这就是你要找的?

根据docs,当您向dir传递一个对象的实例时,它会在该对象中查找名为__dir__的方法,并返回对该对象调用该方法的结果。因为ServerProxy不实现__dir__,所以您必须在class对象上调用它来获取它的属性列表。

编辑:因为您实际上是在远程系统上寻找方法,所以这个答案现在有点没用了,但我想我会把它留在这里,供遇到这个问题的人参考。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17347000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档