如何在python中定义class并继承一个COM对象的属性?
How to define class in python and inherit a COM object properties?
我正在尝试在 python 中定义一个新的 class 并继承现有 COM 对象的属性。
到目前为止,这是我的代码:
import win32com.client
excel=win32com.client.Dispatch('Excel.Application')
excelapp.Visible=1 #opens excel window
class XL(excelapp):
def __init__(self):
excelapp.__init__(self)
XL.Visible=1 #does not work
基本上我想做的就是将 COM 对象继承到我自己的 class 中,这样我就可以添加一些 functions/operations,我可以将其调用为 XL.function_name() 并且也可以能够使用 excelapp.function_name().
提供的所有功能
我意识到我可能会以一种令人困惑的方式问这个问题,因为我对此知之甚少,对 COM 对象的了解更少,但感谢任何人可以提供的反馈或帮助!
谢谢!!
对于那些感兴趣的人.. 据我所知,直接 "inherit" COM 对象属性是不可能的,但您基本上可以通过以下方式定义 class 作为解决方法:
import win32com.client
class WORD(object):
def __init__(self):
self.word = win32com.client.Dispatch("Word.Application")
def __getattr__(self, n):
try:
attr = getattr(self.word, n)
except:
attr = super(WORD, self).__getattr__(n)
return attr
def __setattr__(self, attr, n):
try:
setattr(self.word, attr, n)
except:
super(WORD, self).__setattr__(attr, n)
app = WORD()
然后应用程序对象应该具有使用 win32com.client.Dispatch 命令创建的 COM 对象的所有功能,并且您将能够将自己的自定义方法添加到 class。
我正在尝试在 python 中定义一个新的 class 并继承现有 COM 对象的属性。
到目前为止,这是我的代码:
import win32com.client
excel=win32com.client.Dispatch('Excel.Application')
excelapp.Visible=1 #opens excel window
class XL(excelapp):
def __init__(self):
excelapp.__init__(self)
XL.Visible=1 #does not work
基本上我想做的就是将 COM 对象继承到我自己的 class 中,这样我就可以添加一些 functions/operations,我可以将其调用为 XL.function_name() 并且也可以能够使用 excelapp.function_name().
提供的所有功能我意识到我可能会以一种令人困惑的方式问这个问题,因为我对此知之甚少,对 COM 对象的了解更少,但感谢任何人可以提供的反馈或帮助!
谢谢!!
对于那些感兴趣的人.. 据我所知,直接 "inherit" COM 对象属性是不可能的,但您基本上可以通过以下方式定义 class 作为解决方法:
import win32com.client
class WORD(object):
def __init__(self):
self.word = win32com.client.Dispatch("Word.Application")
def __getattr__(self, n):
try:
attr = getattr(self.word, n)
except:
attr = super(WORD, self).__getattr__(n)
return attr
def __setattr__(self, attr, n):
try:
setattr(self.word, attr, n)
except:
super(WORD, self).__setattr__(attr, n)
app = WORD()
然后应用程序对象应该具有使用 win32com.client.Dispatch 命令创建的 COM 对象的所有功能,并且您将能够将自己的自定义方法添加到 class。