Home | Trees | Indices | Help |
|
---|
|
1 #=================================================== 2 # Thanks to Python Patterns ! 3 # --------------------------- 4 # $Id: gmBorg.py,v 1.7 2009-05-08 07:58:35 ncq Exp $ 5 __version__ = "$Revision: 1.7 $" 6 __author__ = "Karsten.Hilbert@gmx.net" 7 __license__ = "GPL" 8 9 #===================================================11 """A generic Borg mixin for new-style classes. 12 13 - mixin this class with your class' ancestors to borg it 14 15 - there may be many instances of this - PER CHILD CLASS - but they all share state 16 """ 17 _instances = {} 1825 #=================================================== 26 if __name__ == '__main__': 27 30 33 37 38 print "testing new-style classes borg" 39 a1 = A() 40 a2 = A() 41 a1.a = 5 42 print a1.a, "==", a2.a 43 a3 = A() 44 print a1.a, "==", a2.a, "==", a3.a 45 b1 = B() 46 b1.a = 10 47 print b1.a 48 print a1.a 49 b2 = B() 50 print b2.a 51 52 c1 = C(val = 'non-default') 53 print c1.x 54 c2 = C(val = 'non-default 2') 55 print c2.x 56 c3 = C() 57 print c3.x 58 59 #=================================================== 60 # $Log: gmBorg.py,v $ 61 # Revision 1.7 2009-05-08 07:58:35 ncq 62 # - __new__ doesn't take args anymore 63 # 64 # Revision 1.6 2008/05/21 13:57:57 ncq 65 # - remove old borg 66 # 67 # Revision 1.5 2007/10/23 21:23:30 ncq 68 # - cleanup 69 # 70 # Revision 1.4 2007/09/24 22:05:23 ncq 71 # - improved docs 72 # 73 # Revision 1.3 2007/05/11 14:14:59 ncq 74 # - make borg per-sublcass 75 # 76 # Revision 1.2 2007/05/07 12:30:05 ncq 77 # - make cBorg an object child so properties work on it 78 # 79 # Revision 1.1 2004/02/25 09:30:13 ncq 80 # - moved here from python-common 81 # 82 # Revision 1.3 2003/12/29 16:21:51 uid66147 83 # - spelling fix 84 # 85 # Revision 1.2 2003/11/17 10:56:35 sjtan 86 # 87 # synced and commiting. 88 # 89 # Revision 1.1 2003/10/23 06:02:38 sjtan 90 # 91 # manual edit areas modelled after r.terry's specs. 92 # 93 # Revision 1.1 2003/04/02 16:07:55 ncq 94 # - first version 95 # 9620 # look up subclass instance cache 21 if cBorg._instances.get(cls) is None: 22 #cBorg._instances[cls] = object.__new__(cls, *args, **kargs) 23 cBorg._instances[cls] = object.__new__(cls) 24 return cBorg._instances[cls]
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Sat Aug 3 03:56:37 2013 | http://epydoc.sourceforge.net |