Singleton and C extensions
Fredrik Lundh
fredrik at pythonware.com
Fri Nov 25 09:03:41 EST 2005
Emmanuel Briot wrote:
> I am participating in the development of a GPL IDE
> https://libre2.adacore.com/gps/
>
> It is written in Ada, but provides an extensive extensibility through
> Python.
>
> I am not really good at python, but I was trying to implement the
> singleton design pattern in C, so that for instance calling the constructor
>
> ed = Editor ("foo")
>
> would either return an existing instance of Editor currently editing
> "foo", or would create a new instance. Basically, one python instance is
> stored inside each of the visual windows representing an editor, and I
> want to get that instance if it already exists, instead of creating a
> new one each time.
>
> I basically would like
> ed = Editor ("foo")
> ed.attribute = "whatever"
> print Editor ("foo").attribute
>
> to print "whatever"
>
> Has any one an example on how to do that in C, or maybe even at the
> python level itself, and I will try to adapt it ?
use a factory function instead of the class, and let the function create an editor
instance when needed:
_editors = {}
def Editor(name):
try:
editor = _editors[name]
except KeyError:
editor = _editors[name] = EditorImplementation()
editor.setname(name)
...
return editor
if you really need singleton, click here:
http://www.google.com/search?q=python+borg+pattern
</F>
More information about the Python-list
mailing list