2015-01-20 2 views
1

Я задаюсь вопросом, почему, когда я создаю объект 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

Что разница между оберткой и MGR? Они оба являются объектами 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> 

так это означает, что они ссылаются на то же место !!

ответ

0

VirtualBox использует какой-то COM.

Один объект может иметь несколько различных интерфейсов. В Pure C или C++ некоторые интерфейсы имеют один и тот же адрес в памяти, а некоторые нет. Это зависит от интерфейса реализации и компилятора.

Также стоит учитывать, что оболочка для Python может быть динамической (агрегированной) и во время выполнения, чтобы определить, какой из пользовательских интерфейсов лечения был.

Смежные вопросы