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__

すべての Python 関数に対して__name__属性が定義されていると思っていたので、ここで何が問題なのかわかりません。この関数がその属性を持たない可能性はありますか?

OK、メソッドだと思った理由は machine.Win32_ComputerSystem() が定義されているからですが、それだけでは何かがメソッドになるには不十分だと思います。メソッドではないことに気づきました。

ただし、これは機能しません。

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

「Win32_ComputerSystem」を返すようにします。これどうやってするの?

4

2 に答える 2

1

必要な出力を取得する方法を見つけましたが、満足できません。

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

戻り値:'Win32_ComputerSystem'

これを行うには、より Pythonic な方法が必要です。

于 2012-05-30T19:31:38.513 に答える