我正在尝试获取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__
属性是defined for all Python functions,所以我不知道这里有什么问题。这个函数怎么可能没有那个属性呢?
好的,我认为这是一个方法的原因是因为定义了machine.Win32_ComputerSystem(),但我认为这还不足以成为一种方法。我意识到这不是一种方法。
然而,这不起作用:
>> machine.Win32_ComputerSystem.__class__.__name__
'_wmi_class'
我希望它返回'Win32_ComputerSystem'。我怎么能这样做?
答案 0 :(得分:2)
从我所看到的the documentation(具体地,基于this snippet),wmi.Win32_ComputerSystem
是一个类,而不是一个方法。如果你想得到它的名字,你可以尝试:
machine.Win32_ComputerSystem.__class__.__name__
答案 1 :(得分:1)
我找到了一种获得我想要的输出的方法,但它并不能让我满意。
repr(machine.Win32_ComputerSystem).split(':')[-1][:-1]
返回:'Win32_ComputerSystem'
必须有更多的Pythonic方法才能做到这一点。