-1

我定义一个pythonxmlrpc服务器如下(仅用于解释的近似示例):

from SimpleXMLRPCServer import SimpleXMLRPCServer
server = SimpleXMLRPCServer(('localhost', 8000))
server.register_function(foo, "serial.send")
server.serve_forever()

然后我可以使用xmlrpc如下客户端

import xmlrpclib
device = xmlrpclib.ServerProxy("http://localhost:8000/RPC2")
device.serial.send(...)

在这里我可以检查是否devicexmlrpclib.ServerProxywith的一个实例

isinstance(device, xmlrpclib.ServerProxy)

但什么是device.serial?我想检查它device.serial属于一个xmlrpc,而不是,例如,serialsocket其他东西。

这是我要检查的具体示例:

def foo(x):
   if isinstance(x, ...):
       print("xmlrpc access")
   else:
       print("direct access")

foo(device.serial) # expected output: 'xmlrpc access'
foo(serial.Serial(..)) # expected output: 'direct access'
foo(socket.Socket(...)) # expected outcome: 'direct access'
4

1 回答 1

0

如果您要求对 Python 对象进行任意检查,请使用 Python 的“检查”模块:

http://www.ibm.com/developerworks/library/l-pyint/index.html

还检查

>> obj.__class__

或者

>> obj.__class__.__bases__

使您可以访问基类。

于 2013-01-12T14:49:51.557 回答