如何在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。