2013-01-12 137 views
-1

我定義一個python xmlrpc服務器如下(僅用於解釋的事情的目的近似示例):python xmlrpc對象是什麼類型?

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.ServerProxy與實例

isinstance(device, xmlrpclib.ServerProxy) 

但是什麼是?我想檢查屬於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' 
+0

似乎您完全不理解XMLRPC實際在做什麼。爲什麼你應該在客戶端以透明的方式訪問服務器端的數據結構和類型? –

+0

這不夠「類型(object_name)」? – Sibi

回答

0

如果你所要求的Python對象的任意檢查,然後使用「檢查」 模塊的Python:

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

還檢查

>> obj.__class__ 

>> obj.__class__.__bases__ 

可讓您訪問基類。

+0

請參閱最新的問題。但我想用'obj .__ class__'是我的問題的答案。謝謝 – Alex