Benjamin Peterson <benja...@python.org> added the comment: 2011/6/4 Soren Hansen <rep...@bugs.python.org>: > > Soren Hansen <so...@linux2go.dk> added the comment: > > When I first investigated this problem (I reported the original bug on > Launchpad), my first attempt to address this issue in pymox had me quite > stumped. The class in question has a __getattr__ method. Up until now, this > hasn't affected the use of dir(), but it does now. I really just wanted it > return whatever it used to return (since that has worked so far), but > realising that this was an old-style class, I couldn't just call > super(TheClass, self).__dir__(). > > So my question is: If this change stays (which seems clear given that the > only changes proposed here are ways of relaxing the type requirement of the > __dir__ method's return value, not reverting the change altogether), and I > have an old-style class with a __getattr__ defined, how do I make that class > return whatever it would have usually returned for __dir__()?
Yes, this is a limitation of magic methods on old style classes. The usual method is something like this: def __getattr__(self, name): if name == "__dir__": return self.__dir__ # Other stuff Of course, the best fix is to use new-style classes. :) ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue12248> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com