Проверьте, относится ли объект PyVmomi к определенному классу в python

Я пытаюсь выяснить, как проверить, относится ли объект к определенному классу, он отлично работает для таких классов, как «str», «int» и т. д., но не для пользовательских классов из модулей.

Вот что я пробовал.

In [36]: type(cluster)                                                                                                                                                                                 
Out[36]: pyVmomi.VmomiSupport.vim.ComputeResource

In [37]: type(cluster) == pyVmomi.VmomiSupport.vim.ComputeResource                                                                                                                                     
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/source/modregk_bga/eti-data-pipelines/datapipes/lm-sql-capacity/libs/vcenser.py in <module>
----> 1 type(cluster) == pyVmomi.VmomiSupport.vim.ComputeResource

AttributeError: module 'pyVmomi.VmomiSupport' has no attribute 'vim'

In [38]: type ("str")                                                                                                                                                                                  
Out[38]: str

In [39]: type ("str") == str                                                                                                                                                                           
Out[39]: True

In [40]: isinstance(cluster.summary, pyVmomi.VmomiSupport.vim.ComputeResource.Summary)                                                                                                                 
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/source/modregk_bga/eti-data-pipelines/datapipes/lm-sql-capacity/libs/vcenser.py in <module>
----> 1 isinstance(cluster.summary, pyVmomi.VmomiSupport.vim.ComputeResource.Summary)

AttributeError: module 'pyVmomi.VmomiSupport' has no attribute 'vim'

In [41]: 
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
617
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используя isinstance, он может делать то, что вы хотите.
Например, здесь можно проверить с помощью isinstance, является ли объект кластером.

#!/usr/bin/env python
from pyVim.connect import SmartConnect, Disconnect
from pyVmomi import vim
import ssl
import atexit

host = 'change me to vCenter IP or hostname'
username = '[email protected]'
password = 'change me to user password'
mob = vim.ComputeResource

if __name__ == "__main__":
    context = None
    if hasattr(ssl, '_create_unverified_context'):
        context = ssl._create_unverified_context()

    si = SmartConnect(host=host,
                      user=username,
                      pwd=password,
                      sslContext=context)

    atexit.register(Disconnect, si)

    content = si.content

    mob_list = content.viewManager.CreateContainerView(content.rootFolder,
                                                       [mob],
                                                       True)

    for mob in mob_list.view:
        # Check if an object is the cluster
        if isinstance(mob, vim.ComputeResource):
            print("%s is Cluster object" % mob.name)

Другие вопросы по теме