Steven D'Aprano a écrit : > On Thu, 24 Jan 2008 12:35:44 -0800, William Pursell wrote: > >> The ability to have an object change class is >> certainly (to me) a novel idea. Can I do it in Python? > > Yes, mostly. Example: > (snip) > > If you actually play around with this, you'll soon find the limitations. > For instance: > >>>> s.__class__ = int > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > TypeError: __class__ assignment: only for heap types >
Other limitations may appear with frameworks relying on metaprogramming features for their inner working so users don't have to worry about boilerplate - something you'll often find in recent web frameworks, orms etc... Mostly, the point with dynamically changing the class of an object (whether or not your in the above situation) is that you must ensure consistant state by yourself, which sometimes happens to be far less trivial than it seems at first look. I once tried to implement the State pattern this way (in real-life code), and while it worked, it ended being more complicated (and brittle) than implementing it the canonical way. So while it *may* be a good solution, I'd advise you to carefully check the concrete use case before using this feature. -- http://mail.python.org/mailman/listinfo/python-list