1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| class Mom(object):
def __init__(self, name):
assert not hasattr(self.__class__,'_instance')
setattr(self.__class__,'_instance', self)
self.name = name
def __call__(self):
assert hasattr(self.__class__,'_instance')
return getattr(self.__class__,'_instance')
def __str__(self):
klass = self.__class__.__name__
name = self.name
return 'class %(klass)s: %(name)s' % vars()
class _Child1(Mom):
def __init__(self, name):
super(self.__class__, self).__init__(name)
class _Child2(Mom):
def __init__(self, name):
super(self.__class__, self).__init__(name)
Child1 = _Child1('factory')
print 'Child1: ', Child1
Child2 = _Child2('factory')
print 'Child2: ', Child2
a = Child1()
print 'a: ', a
b = Child2()
print 'b: ', b |
Partager