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的包装可以动态(聚合),并在运行时确定哪些用户界面的治疗是。