[python-win32] Strange/impossible Python COM interface behavior

Richard Bell rbell01824 at earthlink.net
Fri Jul 6 01:23:12 CEST 2007


Thanks Mark, that clears up the behavior.  I'd been suspicious that it was
an underlying COM method but couldn't really tell from my limited
understanding of Win32Com.  I'd not understood the differences in printing
an object and printing a list of objects, so you've improved my Python
education yet again.  Thanks.

Regards,
Richard


|-----Original Message-----
|From: Mark Hammond [mailto:mhammond at skippinet.com.au]
|Sent: Thursday, July 05, 2007 6:41 PM
|To: 'Richard Bell'; python-win32 at python.org
|Subject: RE: [python-win32] Strange/impossible Python COM interface
|behavior
|
|> Several things caught my attention about this.
|>
|> First, the attempt to print qNode (an object of class
|> win32com.gen_py.3050F1C5-98B5-11CF-BB82-00AA00BDCE0Bx0x4x0.Dis
|> pHTMLInputElem
|> ent) produces a zero length string.  However print of nodes
|> for other HTML
|> tags such as HTML, BODY, or DIV produces strings that
|> describe the object.
|
|Yes - as I mentioned before, str(ob) calls a COM method on 'ob' - so what
|'print ob' yields is up to the object, not up to win32com.
|
|> Second, when the INPUT node named 'q' is returned as an item
|> in a list (see
|> qNode2) printing the list prints the item.  I'm not sure
|> what's different
|> about printing an item in a list vs printing the item, but
|> clearly something
|> different is involved even though the underlying object is of
|> the same type.
|
|This is just Python.  When you 'print ob', you are doing, basically, print
|str(ob).  But when ob is a list, the list object itself uses repr() on the
|list elements.  So if 'ob' is in a list, you get different results than if
|it is not.  This is Python, not win32com.
|
|Mark



More information about the Python-win32 mailing list