0

私はこれを試しました:

class A(IntelliCAD.IIcadApplication):
    def __init__(self):
        self = (win32com.client.Dispatch('Icad.Application'))
        print dir(self)           



a = A()
print dir(a)

そして、次の出力を得ました:

['CLSID', 'DefineFunction', 'GetInterfaceObject', 'Help',
'IsFunctionLoaded', 'ListSDS', 'LoadDVB', 'LoadLISP', 'LoadSDS',
'Quit', 'RunCommand', 'RunMacro', 'RunScript', 'UndefineFunction',
'UnloadDVB', 'UnloadSDS', '_ApplyTypes_', '__doc__', '__eq__',
'__getattr__', '__init__', '__module__', '__ne__', '__repr__',
'__setattr__', '_get_good_object_', '_get_good_single_object_',
'_oleobj_', '_prop_map_get_', '_prop_map_put_', 'coclass_clsid']

['CLSID', 'DefineFunction', 'GetInterfaceObject', 'Help',
'IsFunctionLoaded', 'ListSDS', 'LoadDVB', 'LoadLISP', 'LoadSDS',
'Quit', 'RunCommand', 'RunMacro', 'RunScript', 'UndefineFunction',
'UnloadDVB', 'UnloadSDS', '_ApplyTypes_', '__doc__', '__eq__',
'__getattr__', '__init__', '__module__', '__ne__', '__repr__',
'__setattr__', '_get_good_object_', '_get_good_single_object_',
'_prop_map_get_', '_prop_map_put_', 'coclass_clsid']

唯一の違いは_oleobj_、どちらが失われたかということです。私は何を間違っていますか?

4

1 に答える 1

1

簡単です)Dispatchを「self」に割り当てると、ローカル変数を隠す新しい他のオブジェクトが作成されます。Python ではポインターにアクセスできないため、オブジェクトを置き換えることはできません。

必要なオブジェクトを使用します:

a1 = A()
# or
a2 = win32com.client.Dispatch('Icad.Application')

どこでもクラスを使用する必要はありません。

于 2012-09-14T09:44:58.667 に答える