David Anderson wrote: > Well, I've got a little problem, I have a list that contains objects > from the class C, then I use those objects.__str__ to generate a > ListCtrl, A wxPython widget that makes a list of strings and then you > can handle events when selected, and returns the string selcted, how > can I access the "parent" of that string? > I tried to search on the array like this: > def search(self, string): > for obj in self.list: > if string == obj.__str__: > return obj > return None > > But I always get None... What am I doing wrong?
Once again, you are confused over the difference between a value and a function that, when called, returns a value. obj.__str__ is a function. If you call it like this, obj.__str__(), then you get a string. So your comparison should be if string == obj.__str__(): Slightly better would be to call str(obj) and let Python translate that into a call to __str__. But even better is to replace this rather bogus approach with something better. When you create an object, record its string representation in a dictionary to be used to recover the object when given a string later: That is, for each object obj do: objMap[str(obj)] = obj and later with the string in hand, do obj = objMap[string] One other word of warning. It is best to not use a variable named "string" as Python has a builtin type of that name which would become inaccessible if you redefine. Gary Herron -- http://mail.python.org/mailman/listinfo/python-list