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 回答