singleton decorator
r.grimm at science-computing.de
r.grimm at science-computing.de
Thu Mar 27 13:06:56 EDT 2008
Hallo,
playing with the decorators from PEP 318 I found the elegant singleton
decorator.
def singleton(cls):
instances = {}
def getinstance():
if cls not in instances:
instances[cls] = cls()
return instances[cls]
return getinstance
@singleton
class A: pass
class B: pass
a1=A()
a2=A()
a3=A()
b1=B()
b2=B()
b3=B()
for i in ((a1,b1),(a2,b2),(a3,b3)):
print id(i[0]),id(i[1])
But I always get a syntax error declaring class A as singleton.
>>> reload ( decorator)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "decorator.py", line 27
class A: pass
^
SyntaxError: invalid syntax
What's the problem with this code because it's only copied for the PEP
318?
It doesn't work with python 2.4 and python 2.5.
Greetings Rainer
More information about the Python-list
mailing list