Philippe C. Martin wrote:

Hi,

After all of you answers, I though I had it straight, yet .....

This is what  I am doing:

class SC_ISO_7816:
__m_loaded = None
......
def __init__(self):
if SC_ISO_7816.__m_loaded == None:
SC_ISO_7816.__m_loaded = True
print 'LOADING'
self.__Load()
print self.SW1_DICT
else:
print 'DICT ALREADY LOADED!',
print self.SW1_DICT
pass
.......



I'd take an entirely different approach to creating a Singleton. I'd have it in its own module, and create a private but ordinary class (with no special class variables, init tests, or anything).


class __ISO_7816:
   def __init__(self):
       # loading code goes here...
       # ...

Then, I'd create a factory function that ensures that only a single instance gets created, and treat that factory function as the only way to instantiate the Singleton class:

__my_ISO_obj = None
def SC_ISO_7816():
   global __my_ISO_obj
   if __my_ISO_obj is None:
       __my_ISO_obj = __ISO_7816()
   return __my_ISO_obj

The rest of your code then calls ISO_module.SC_ISO_7816(). The first time it's called, an instance of this class is created. All subsequent calls just return a reference to the same instance. This ensures that any changes to the instance are reflected anywhere that the object is used. (In your code, only changes to the class SW1_DICT are reflected elsewhere, not changes to any other attributes.)

Jeff Shannon
Technician/Programmer
Credit International


-- http://mail.python.org/mailman/listinfo/python-list

Reply via email to