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
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to