Return class instance from COM method in Python
Paul
paul.kemp at standardbank.com
Mon Oct 20 12:04:25 EDT 2003
Hi
I'm implementing a few COM classes using Python. I've come across a
problem when I'm trying the return an instance of a class from a
method on one of my classes. The code is as follows, with two classes
- clsDividend and clsDividendEsimate. The
clsDividend.GetDividendEstimates method tries to return a new instance
of the clsDividendEstimate class, but throws an error.
Any ideas what I'm doing wrong - is it possible to do what I'm trying
to achieve?
The client will ultimately be Excel, but I can't even get it to work
within a Python client yet. Ultimately I'd like to do this in my
client(pseudo):
oDiv = CreateObject("SBLFront.clsDividend")
oDivEst = oDiv.GetDividendEstimates("testval")
msgbox oDivEst.ccy
Many thanks
Paul
# Expose the Python SBLFront.
class clsDividend(clsSBLFront):
"""The SBLFront object exposed via COM
"""
#_reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER
_public_methods_ = ['GetDividendEstimates']
_public_methods_.extend(clsSBLFront._public_methods_)
# All registration stuff to support fully automatic
register/unregister
_reg_verprogid_ = "SBLFront.clsDividend.1"
_reg_progid_ = "SBLFront.clsDividend"
_reg_desc_ = "Python SBLFront"
_reg_clsid_ = "{2E851A1B-A8D1-4AD5-BA16-EB6B9BCF2F21}"
_reg_class_spec_ = "win32com.servers.sblfront.clsDividend"
# ------------------------------------------------------------------------
def __init__(self):
clsSBLFront.__init__(self)
self.dict = {}
def GetDividendEstimates(self, InsId):
oDivEst = clsDividendEstimate('USD', 1.0, 1.0,
'2003-01-01','2003-01-01','2003-01-01','Test description')
return oDivEst
# ----------------------------------------------------------------------------
class clsDividendEstimate:
"""The SBLFront object exposed via COM
"""
_public_methods_ = []
_public_attrs_ = ['ccy', 'dividend', 'tax_factor', 'pay_day',
'ex_div_day', 'day', 'description']
_readonly_attrs_ = ['ccy', 'dividend', 'tax_factor', 'pay_day',
'ex_div_day', 'day', 'description']
# All registration stuff to support fully automatic
register/unregister
_reg_verprogid_ = "SBLFront.clsDividendEstimate.1"
_reg_progid_ = "SBLFront.clsDividendEstimate"
_reg_desc_ = "Python SBLFront"
_reg_clsid_ = "{055DEFBC-B095-4C5B-A9CE-BFBB965BBDC1}"
_reg_class_spec_ = "win32com.servers.sblfront.clsDividendEstimate"
# ------------------------------------------------------------------------
def __init__(self):
self.dict = {}
self.ccy = ''
self.dividend = 0.0
self.tax_factor = 0.0
self.pay_day = ''
self.ex_div_day = ''
self.day = ''
self.description = ''
def __init__(self, sCCY, dDiv, dTax, dtDay, dtPayDay, dtExDivDay,
sDesc):
self.dict = {}
self.ccy = sCCY
self.dividend = dDiv
self.tax_factor = dTax
self.pay_day = dtPayDay
self.ex_div_day = dtExDivDay
self.day = dtDay
self.description = sDesc
More information about the Python-list
mailing list