Python COM problem - accessing properties with optional parameters

Mark Hammond mhammond at skippinet.com.au
Fri Jun 28 20:10:29 EDT 2002


Dave Kirby wrote:
> I am using Python to access the Microsoft Accessibility interface.  I have
> got as far as getting an IAccessible object, but am having problems calling
> some of its methods.
> 
> The problem is that some of the methods are declared as properties with
> [propget] or [propput] in the IDL, but also have optional parmeters.  For
> example:
> 
>   [hidden, propget, id(DISPID_ACC_NAME)] HRESULT accName([in, optional]
> VARIANT varChild,[out, retval] BSTR* pszName);
> 
> if I have a an object called obj I can access the property accName like
> this:
> 
> 
>>>>obj.accName
>>>
> u'Some Object Name'
> 
> 
> which is all fine and good.  However there are times when I need to call the
> accName method with an int parameter, e.g.
> 
> 
>>>>obj.accName(0)
>>>
> Traceback (most recent call last):
>   File "<interactive input>", line 1, in ?
> TypeError: object of type 'unicode' is not callable
> 
> 
> this obviously doesnt work, since it treating it as a property and returning
> a string, then trying to call that string as a function.

If you run makepy over the type library, you *should* find that the 
property has *also* been exposed as a "SetAccName()" method.  Check the 
generated code for details.

Mark.




More information about the Python-list mailing list