win32com在创建类时丢失了PyIDispatch属性

时间:2012-09-06 17:00:46

标签: python win32com

我试过了:

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_以某种方式丢失了。我做错了什么?

1 个答案:

答案 0 :(得分:1)

很简单) 将Dispatch分配给“self”时,您将创建一个隐藏局部变量的新其他对象。你不能替换对象,因为你没有访问Python中的指针。

使用您需要的对象:

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

无需在任何地方使用课程。