Smalltalk and Python
Carel Fellinger
cfelling at iae.nl
Fri Dec 15 10:13:57 EST 2000
More information about the Python-list mailing list
Fri Dec 15 10:13:57 EST 2000
- Previous message (by thread): Smalltalk and Python
- Next message (by thread): Smalltalk and Python
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Rainer Deyke <root at rainerdeyke.com> wrote: > (where Singleton is an instance of the (meta-)class that implements > singletons, not listed here because I haven't written or found it yet) I once tried the mixin approach, but was left with to many loose ends so I would go for the factory approach like: '''Singleton Pattern Using the singleton factory each class keeps track of its own singleton, unless some base class had the magic attribute "__singleton" set to []. In that case all derived classes share their singleton; so all instances in use better be in a sole inheritance line from that base class up and you better take care to instantiate the last class in that particular derivation chain first! ''' def singleton(Class): if hasattr(Class, "__singleton"): a = Class.__singleton if a == []: a.append(Class()) return a[0] else: name = '_%s__singleton' % Class.__name__ if not Class.__dict__.has_key(name): Class.__dict__[name] = Class() return Class.__dict__[name] #singleton=instance if __name__ == "__main__": class A: pass class AA(A): pass setattr(A, "__singleton", []) assert singleton(AA) is singleton(A) assert singleton(A) is singleton(A) assert singleton(AA) is singleton(AA) del A.__singleton assert not singleton(AA) is singleton(A) assert singleton(A) is singleton(A) assert singleton(AA) is singleton(AA) -- groetjes, carel
- Previous message (by thread): Smalltalk and Python
- Next message (by thread): Smalltalk and Python
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list