diff --git a/lib/cdist/core/type.py b/lib/cdist/core/type.py index 309528ef..42a74398 100644 --- a/lib/cdist/core/type.py +++ b/lib/cdist/core/type.py @@ -46,6 +46,16 @@ class Type(object): return os.listdir(base_path) + _instances = {} + def __new__(cls, *args, **kwargs): + """only one instance of each named type may exist""" + # name is second argument + name = args[1] + if not name in cls._instances: + instance = super(Type, cls).__new__(cls, *args, **kwargs) + cls._instances[name] = instance + return cls._instances[name] + def __init__(self, base_path, name): self._base_path = base_path self.name = name @@ -64,7 +74,6 @@ class Type(object): self.__required_parameters = None self.__optional_parameters = None - def __repr__(self): return '' % self.name