我试过了:
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_
以某种方式丢失了。我做错了什么?
答案 0 :(得分:1)
很简单) 将Dispatch分配给“self”时,您将创建一个隐藏局部变量的新其他对象。你不能替换对象,因为你没有访问Python中的指针。
使用您需要的对象:
a1 = A()
# or
a2 = win32com.client.Dispatch('Icad.Application')
无需在任何地方使用课程。