I've been wondering for a while about whether assigning to __class__ is bad form or not. Specifically, I mean doing so when some other method of implementing the functionality you're after is available (i.e. using an adapter, or something like the strategy pattern).
To give an example and a non-example of what I'm talking about, consider the following recipes from the online Python Cookbook: Ring Buffer: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/68429 In this case, I think the assignment to __class__ just obfuscates things, and the example would be better coded as a single class. On the other hand, Fast copy of an object having a slow __init__ : http:// aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66507 This seems like a reasonable use case for assigning to __class__ (except that it's already implemented in the 'new' module, but, read the Martelli- bot's comments near the end of the recipe). I consider this a reasonable use case for assigning to __class__, because, short of the 'new' module, I don't see any other way to accomplish it. So, what is the opinion of the broader Python community? Is code that assigns to __class__ just clever trickiness to be avoided, or is it sometimes a good thing? -- code.py: A blog about life, the universe, and Python http://pythonista.wordpress.com ** Posted from http://www.teranews.com ** -- http://mail.python.org/mailman/listinfo/python-list