*** empty log message ***
This commit is contained in:
parent
d855d6c85a
commit
3ee305faf6
|
|
@ -1019,3 +1019,52 @@ class Enum:
|
|||
if hasattr(self, item):
|
||||
return 0
|
||||
return 1
|
||||
|
||||
############################################################
|
||||
# class: Singleton
|
||||
# Purpose: This provides a base metaclass for all classes
|
||||
# that require one and only one instance.
|
||||
#
|
||||
# Example: class mySingleton:
|
||||
# __metaclass__ = PythonUtil.Singleton
|
||||
# def __init__(self,...):
|
||||
# ...
|
||||
#
|
||||
# Note: This class is based on Python's New-Style Class
|
||||
# design. An error will occur if a defined class
|
||||
# attemps to inherit from a Classic-Style Class only,
|
||||
# ie: class myClassX:
|
||||
# def __init__(self, ...):
|
||||
# ...
|
||||
#
|
||||
# class myNewClassX(myClassX):
|
||||
# __metaclass__ = PythonUtil.Singleton
|
||||
# def __init__(self, ...):
|
||||
# myClassX.__init__(self, ...)
|
||||
# ...
|
||||
#
|
||||
# This causes problems because myNewClassX is a
|
||||
# New-Style class that inherits from only a
|
||||
# Classic-Style base class. There are two ways
|
||||
# simple ways to resolve this issue.
|
||||
#
|
||||
# First, if possible, make myClassX a
|
||||
# New-Style class by inheriting from object
|
||||
# object. IE: class myClassX(object):
|
||||
#
|
||||
# If for some reason that is not an option, make
|
||||
# myNewClassX inherit from object and myClassX.
|
||||
# IE: class myNewClassX(object, myClassX):
|
||||
############################################################
|
||||
class Singleton(type):
|
||||
def __init__(cls,name,bases,dic):
|
||||
super(Singleton,cls).__init__(name,bases,dic)
|
||||
cls.instance=None
|
||||
def __call__(cls,*args,**kw):
|
||||
if cls.instance is None:
|
||||
cls.instance=super(Singleton,cls).__call__(*args,**kw)
|
||||
return cls.instance
|
||||
|
||||
class SingletonError(ValueError):
|
||||
""" Used to indicate an inappropriate value for a Singleton."""
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue