VirtualBox虚拟的Python API VirtualBoxManager()

问题描述:

我很奇怪,为什么当我创建这样的VirtualBoxManager对象:VirtualBox虚拟的Python API VirtualBoxManager()

# This is a VirtualBox COM/XPCOM API client, no data needed. 
wrapper = VirtualBoxManager(None, None) 

# Get the VirtualBox manager 
mgr = wrapper.mgr 
# Get the global VirtualBox object 
vbox = wrapper.vbox 

上面的代码是从http://www.virtualbox.org/svn/vbox/trunk/src/VBox/Main/webservice/samples/python/clienttest.py

什么包装和经理之间的区别? 它们都是VirtualBoxManager对象!为什么打扰从包装获得?为什么包装器(VirtualBoxManager对象)包含一个对象mgr(VirtualBoxManager对象)?

当我尝试自己的代码

wrapper = VirtualBoxManager("WEBSERVICE", {"url": "", "username": "", "password": ""}) 
mgr = wrapper.mgr 
print str(mgr)                                   
print str(wrapper) 

输出是一样的:

<vboxapi.VirtualBoxManager object at 0x7f2a9c551050> 
<vboxapi.VirtualBoxManager object at 0x7f2a9c551050> 

所以这意味着它们指的是同一个地方!

VirtualBox使用某种COM

一个对象可能有几个不同的接口。在Pure C或C++中,有些接口在内存中具有相同的地址,有些则不是。它取决于实现和编译器接口。

还值得考虑Python的包装可以动态(聚合),并在运行时确定哪些用户界面的治疗是。