Am 06.03.2015 um 23:12 schrieb Aaron Meurer:
Hmm, I didn't notice that the only reason this class is constructed at
import time is that it uses the Singleton metaclass.

Singleton actually explicitly documents that it's running the instance constructor during class declaration:

The class is instantiated immediately at the point where it is
defined by calling cls.__new__(cls). This instance is cached and
cls.__new__ is rebound to return it directly.

As I understand things, the behaviour that we want is the exact opposite, namely that a singleton class defers constructing the singleton until the first time it is explicitly requested.

So I'm changing that behaviour, and removing that section from the docstring.


There's one funny thing I noticed: Singleton caches the original constructor, under the name of _new_instance, so that subclasses can still call it to construct their own instances. However, _new_instance is never ever called in all of SymPy. There's not even a unit test for that behaviour. Should I remove that feature? It would simplify the code, not in terms of lines of code but conceptually (because finding the constructor involves looking in the MRO chain so anybody trying to understand the code has to understand both the lookup and the caching at the same time).

--
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/54FC117D.50207%40durchholz.org.
For more options, visit https://groups.google.com/d/optout.

Reply via email to