On Thu, May 28, 2015 at 5:04 PM, Steven D'Aprano <steve+comp.lang.pyt...@pearwood.info> wrote: >> This does appear to work. Whether or not it's a good idea is a >> separate question. > > > And this is EXACTLY the sort of use-case that having __class__ be writable > is intended to solve. So this is exactly the solution I was after, thank > you. Er... except for one little problem... in Python 3.3: > > py> f = open("/tmp/a", "r") > py> f.__class__ = MyFile > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > TypeError: __class__ assignment: only for heap types > > > So it doesn't work for me. What version of Python are you using?
Huh, didn't even think to check other versions. $ python3 Python 3.5.0b1+ (default:7255af1a1c50+, May 26 2015, 00:39:06) [GCC 4.9.2] on linux It's a build fresh from source control around about this weekend (some time after feature freeze, obviously, but beyond that all I know is what you see there). I guess this is pretty new; trying the same thing on 3.4.2 doesn't work. But hey! 3.5 will be out soon... ChrisA -- https://mail.python.org/mailman/listinfo/python-list