1

我正在尝试获取 WMI win32 类的名称。但是__name__没有为它定义属性。

>> import wmi
>> machine = wmi.WMI()
>> machine.Win32_ComputerSystem.__name__

我收到以下错误:

Traceback (most recent call last):
  File "<pyshell#21>", line 1, in <module>
    machine.Win32_ComputerSystem.__name__
  File "C:\Python27\lib\site-packages\wmi.py", line 796, in __getattr__
    return _wmi_object.__getattr__ (self, attribute)
  File "C:\Python27\lib\site-packages\wmi.py", line 561, in __getattr__
    return getattr (self.ole_object, attribute)
  File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 457, in __getattr__
    raise AttributeError(attr)
AttributeError: __name__

我以为__name__属性是为所有Python函数定义的,所以我不知道这里有什么问题。这个函数怎么可能没有那个属性?

好的,我认为它是一种方法的原因是因为 machine.Win32_ComputerSystem() 已定义,但我想这还不足以成为一种方法。我意识到这不是一种方法。

但是,这不起作用:

>> machine.Win32_ComputerSystem.__class__.__name__
'_wmi_class'

我希望它返回“Win32_ComputerSystem”。我怎样才能做到这一点?

4

2 回答 2

2

从我可以看出查看文档(特别是基于此代码段),wmi.Win32_ComputerSystem是一个类,而不是一个方法。如果你想得到它的名字,你可以尝试:

machine.Win32_ComputerSystem.__class__.__name__
于 2012-05-30T18:08:44.520 回答
1

我找到了一种方法来获得我想要的输出,但它并不满足我。

repr(machine.Win32_ComputerSystem).split(':')[-1][:-1]

返回:'Win32_ComputerSystem'

必须有一种更 Pythonic 的方式来做到这一点。

于 2012-05-30T19:31:38.513 回答