我试图在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/

10-11 23:19
查看更多