Forgive me if I mangle any terminology here, but please correct me if I do...
I have an object which acts exactly like a string as long as I stay in Python land. However, I am using the object in Softimage|XSI, a 3D application on Windows. I'm getting variant erros when trying to use my instances as I would a string. XSI was created while (briefly) owned by Microsoft, so knowledge of COM with excel, or anything else, should be applicable I should think. I should also say I am a COM novice and still learning the depths of Python. Here is an example... class StrLike(object): def __init__(self, s): self.__data = s def __repr__(self): return repr(self.__data) def __cmp__(self, string): return cmp(self.__data, string) def __contains__(self, char): return char in self.__data __data = "" def __Set(self, value): self.__data = value def __Get(self): return self.__data data = property(fget = __Get, fset = __Set, fdel = None, doc = "string-like example") >>>s = StrLike("test") >>>s 'test' >>>if s == "test": print "cmp works" cmp works Now if I try to pass this as I would a string, roughly like so... >>>s = StrLike("test") >>>Application.AnObject.attribute = "test" # works fine >>>Application.AnObject.attribute = s ERROR : Traceback (most recent call last): File "<Script Block >", line 18, in <module> XSI.Selection[0].name = s File "C:\Python25\Lib\site-packages\win32com\client\dynamic.py", line 544, in __setattr__ self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value) TypeError: Objects of type 'StrLike' can not be converted to a COM VARIANT Inheriting the str type doesn't raise any errors, but it's immutible so it won't work. The attribute I am trying to set in XSI only takes a string. So is it possible to make a string like object work like a string in this scenario? Is there some built-in method I am missing or some win32com.client trick? Help? Thanks for reading, - Rafe -- http://mail.python.org/mailman/listinfo/python-list