我试图在python中定义一个新类,并继承现有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对象继承到自己的类中,这样我就可以添加一些可以以XL.function_name()形式调用的函数/操作,还可以使用excelapp.function_name()来使用所有可用的函数。 。
我意识到我可能会以一种令人困惑的方式问这个问题,因为我对此并不了解很多,对COM对象的了解甚至更少,但是感谢任何反馈或任何人都可以提供的帮助!
谢谢!!
最佳答案
对于那些有兴趣的人。.据我所知,不可能直接“继承” COM对象的属性,但是基本上可以通过以下方式将类定义为解决方法:
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对象的所有功能,并且您将能够向类添加自己的自定义方法。
关于python - 如何在python中定义类并继承COM对象属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56529402/