]> SALOME platform Git repositories - modules/adao.git/commitdiff
Salome HOME
Documentation and code quality update
authorJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Tue, 4 Apr 2023 06:38:43 +0000 (08:38 +0200)
committerJean-Philippe ARGAUD <jean-philippe.argaud@edf.fr>
Tue, 4 Apr 2023 06:38:43 +0000 (08:38 +0200)
21 files changed:
doc/en/ref_algorithm_DerivativeFreeOptimization.rst
doc/en/ref_algorithm_DifferentialEvolution.rst
doc/en/ref_algorithm_ParticleSwarmOptimization.rst
doc/en/ref_algorithm_TabuSearch.rst
doc/en/ref_observers_requirements.rst
doc/en/reference.rst
doc/en/theory.rst
doc/fr/ref_algorithm_DerivativeFreeOptimization.rst
doc/fr/ref_algorithm_DifferentialEvolution.rst
doc/fr/ref_algorithm_ParticleSwarmOptimization.rst
doc/fr/ref_algorithm_TabuSearch.rst
doc/fr/ref_observers_requirements.rst
doc/fr/reference.rst
doc/fr/theory.rst
src/daComposant/daCore/Aidsm.py
src/daComposant/daCore/AssimilationStudy.py
src/daComposant/daCore/BasicObjects.py
src/daComposant/daCore/ExtendedLogging.py
src/daComposant/daCore/Interfaces.py
src/daComposant/daCore/NumericObjects.py
src/daComposant/daCore/Persistence.py

index 192f3c442df1e196c9f4dd4505f816457e66408d..d41e50682cd2f0ccbf8f2f649b18d09443e3db9b 100644 (file)
@@ -22,6 +22,7 @@
    Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
 
 .. index:: single: DerivativeFreeOptimization
+.. index:: single: Global optimization
 .. _section_ref_algorithm_DerivativeFreeOptimization:
 
 Calculation algorithm "*DerivativeFreeOptimization*"
index 4ada6fb0e1870967e6576746328a372d68333d6d..49d0aae36dd7b540260d1ae12565bdefb1eeaa40 100644 (file)
@@ -22,6 +22,7 @@
    Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
 
 .. index:: single: DifferentialEvolution
+.. index:: single: Global optimization
 .. _section_ref_algorithm_DifferentialEvolution:
 
 Calculation algorithm "*DifferentialEvolution*"
index 04e12a56561b782b0e9b1125811e5e7ee1cb82eb..83074b468efcf5515fb265265516687216f8a9d9 100644 (file)
@@ -22,6 +22,7 @@
    Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
 
 .. index:: single: ParticleSwarmOptimization
+.. index:: single: Global optimization
 .. _section_ref_algorithm_ParticleSwarmOptimization:
 
 Calculation algorithm "*ParticleSwarmOptimization*"
index 183ab0958ecc20c26fd310133015398afec04b20..99762fb3ac8a54aba98e540527da87854fab91ce 100644 (file)
@@ -22,6 +22,7 @@
    Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
 
 .. index:: single: TabuSearch
+.. index:: single: Global optimization
 .. _section_ref_algorithm_TabuSearch:
 
 Calculation algorithm "*TabuSearch*"
index 880fe89d7fbb0f2e12ff4c97704dc207d7a1add4..4cdf140263e378d5405fbe3ff1aa635e1bf95340 100644 (file)
@@ -129,10 +129,10 @@ modified function can be used in a "*String*" or "*Script*" input.
 .. note::
 
     Some of the "observers" allow to create figures using the built-in Python
-    module Gnuplot.py [Gnuplot.py]_, which is an interface to control and send
-    arguments to the classic graphical plotting utility Gnuplot [Gnuplot]_.
-    Available under most environments, Gnuplot is independent and must be
-    correctly preinstalled. Gnuplot.py is here updated to support Python 3.
+    module Gnuplot.py [Gnuplot.py]_, here updated to support Python 3. This
+    module is an interface to control and to send arguments to the outstanding
+    classic utility for graphic plotting Gnuplot [Gnuplot]_. Available for most
+    environments, Gnuplot is independent and must be correctly preinstalled.
 
 Hereinafter we give the identifier and the contents of all the available
 "*observer*" models.
index 3b414bc58188b613adfcc94c28d2a8cdde120080..12fd3cc131d9ed29a321fee0bc61f2464d4718f3 100644 (file)
@@ -89,11 +89,12 @@ This section describes algorithmic choices to use data assimilation methods,
 optimization methods or methods with reduction, available in ADAO, detailing
 their characteristics and their options.
 
-Some examples on these commands usage are available in the section
-:ref:`section_tutorials_in_salome`, in the section
-:ref:`section_tutorials_in_python` and in the sample files installed with ADAO.
-The mathematical concepts and notations used are explained in the section
-:ref:`section_theory`.
+Some examples on these commands usage are available in the section of
+:ref:`section_tutorials_in_salome`, in the section of
+:ref:`section_tutorials_in_python`, in the section of
+:ref:`section_docu_examples`, and in the sample files installed with ADAO. The
+mathematical concepts and notations used are explained in the general section
+providing :ref:`section_theory`.
 
 .. toctree::
    :maxdepth: 1
@@ -125,11 +126,12 @@ The mathematical concepts and notations used are explained in the section
 This section describes the checking algorithms available in ADAO, detailing
 their usage characteristics and their options.
 
-Some examples on these commands usage are available in the section
-:ref:`section_tutorials_in_salome`, in the section
-:ref:`section_tutorials_in_python` and in the sample files installed with ADAO.
-The mathematical concepts and notations used are explained in the section
-:ref:`section_theory`.
+Some examples on these commands usage are available in the section of
+:ref:`section_tutorials_in_salome`, in the section of
+:ref:`section_tutorials_in_python`, in the section of
+:ref:`section_docu_examples`, and in the sample files installed with ADAO. The
+mathematical concepts and notations used are explained in the general section
+providing :ref:`section_theory`.
 
 .. toctree::
    :maxdepth: 1
@@ -158,9 +160,9 @@ This section describes the dedicated task or study oriented cases available in
 ADAO, detailing their usage characteristics and their options.
 
 These tasks use algorithms from data assimilation methods, optimization methods
-or methods with reduction. We refer to the :ref:`section_theory` section and
-the :ref:`section_reference_assimilation` section for the underlying
-algorithmic details.
+or methods with reduction. We refer to the general section providing
+:ref:`section_theory` section and to the :ref:`section_reference_assimilation`
+section for the underlying algorithmic details.
 
 .. toctree::
    :maxdepth: 1
index 8644cf9d285c4624d9595b45e5a00aaffed31b33..e2044b9b9286024d277f1c25426deaa4bcff4bfa 100644 (file)
@@ -508,6 +508,8 @@ Going further in the state estimation by optimization methods
 
 .. index:: single: state estimation
 .. index:: single: optimization methods
+.. index:: single: Local optimization
+.. index:: single: Global optimization
 .. index:: single: DerivativeFreeOptimization
 .. index:: single: ParticleSwarmOptimization
 .. index:: single: DifferentialEvolution
index c0a9ab5bfa827e089dc6caf6fe9d26e6de329a3f..3f7d1c071105cadf5eb5539bd93934b402c5397f 100644 (file)
@@ -22,6 +22,8 @@
    Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
 
 .. index:: single: DerivativeFreeOptimization
+.. index:: single: Optimisation globale
+.. index:: single: Globale (optimisation)
 .. _section_ref_algorithm_DerivativeFreeOptimization:
 
 Algorithme de calcul "*DerivativeFreeOptimization*"
index a542bbc38cdfa0546af251e18dd77044da332d0a..83692a1d9895c3a1c86ca4a3bc1f0927fb5b8070 100644 (file)
@@ -22,6 +22,8 @@
    Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
 
 .. index:: single: DifferentialEvolution
+.. index:: single: Optimisation globale
+.. index:: single: Globale (optimisation)
 .. _section_ref_algorithm_DifferentialEvolution:
 
 Algorithme de calcul "*DifferentialEvolution*"
index 590ea3dd796e14fd687aa080839964e16b6f468a..a2a66b20568ee2d6b200574474f726f7073964b8 100644 (file)
@@ -22,6 +22,8 @@
    Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
 
 .. index:: single: ParticleSwarmOptimization
+.. index:: single: Optimisation globale
+.. index:: single: Globale (optimisation)
 .. _section_ref_algorithm_ParticleSwarmOptimization:
 
 Algorithme de calcul "*ParticleSwarmOptimization*"
index d96e8253e0ed8524f6529a15f28e0aaec9c37795..711bfb96163e0b083f4164ac9be6037ca0c6d20f 100644 (file)
@@ -22,6 +22,8 @@
    Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
 
 .. index:: single: TabuSearch
+.. index:: single: Optimisation globale
+.. index:: single: Globale (optimisation)
 .. _section_ref_algorithm_TabuSearch:
 
 Algorithme de calcul "*TabuSearch*"
index 6a2148738f5625e6179e2304680b26a01081935a..c07c8624c286443c00af7622991117bff78440dd 100644 (file)
@@ -139,11 +139,12 @@ utilisée dans une entrée de type "*String*" ou de type "*Script*".
 .. note::
 
     Une partie des "*observer*" permet de créer des figures en utilisant le
-    module Python intégré Gnuplot.py [Gnuplot.py]_, qui est une interface de
-    contrôle et transmission d'arguments à l'utilitaire classique de tracé
-    graphique Gnuplot [Gnuplot]_. Disponible sous la grande majorité des
+    module Python intégré Gnuplot.py [Gnuplot.py]_, ici mis à jour pour
+    supporter Python 3. Ce module est une interface de contrôle et de
+    transmission d'arguments au remarquable utilitaire classique de tracé
+    graphique Gnuplot [Gnuplot]_. Disponible pour la grande majorité des
     environnements, ce dernier est indépendant et doit être correctement
-    préinstallé. Gnuplot.py est ici mis à jour pour supporter Python 3
+    préinstallé.
 
 On donne ci-après l'identifiant et le contenu de tous les modèles "*observer*"
 disponibles.
index e8be997e93e444562ecad43b55c779210e454440..b5df59c2f52f1ac4f23fa3f8bf285ca9e12cd282 100644 (file)
@@ -91,11 +91,12 @@ d'assimilation de données, des méthodes d'optimisation ou des méthodes avec
 réduction, disponibles dans ADAO, en détaillant leurs caractéristiques et leurs
 options.
 
-Des exemples sur l'usage de ces commandes sont disponibles dans la section
-:ref:`section_tutorials_in_salome`, dans la section
-:ref:`section_tutorials_in_python` et dans les fichiers d'exemple installés
-avec ADAO. Les notions et notations mathématiques utilisées sont expliquées
-dans la section :ref:`section_theory`.
+Des exemples sur l'usage de ces commandes sont disponibles dans la section des
+:ref:`section_tutorials_in_salome`, dans la section des
+:ref:`section_tutorials_in_python`, dans la section des
+:ref:`section_docu_examples`, et dans les fichiers d'exemple installés avec
+ADAO. Les notions et notations mathématiques utilisées sont expliquées dans la
+section générale donnant :ref:`section_theory`.
 
 .. toctree::
    :maxdepth: 1
@@ -127,11 +128,12 @@ dans la section :ref:`section_theory`.
 Cette section décrit les algorithmes de vérification disponibles dans ADAO,
 détaillant leurs caractéristiques d'utilisation et leurs options.
 
-Des exemples sur l'usage de ces commandes sont disponibles dans la section
-:ref:`section_tutorials_in_salome`, dans la section
-:ref:`section_tutorials_in_python` et dans les fichiers d'exemple installés
-avec ADAO. Les notions et notations mathématiques utilisées sont expliquées
-dans la section :ref:`section_theory`.
+Des exemples sur l'usage de ces commandes sont disponibles dans la section des
+:ref:`section_tutorials_in_salome`, dans la section des
+:ref:`section_tutorials_in_python`, dans la section des
+:ref:`section_docu_examples`, et dans les fichiers d'exemple installés avec
+ADAO. Les notions et notations mathématiques utilisées sont expliquées dans la
+section générale donnant :ref:`section_theory`.
 
 .. toctree::
    :maxdepth: 1
@@ -162,7 +164,7 @@ options.
 
 Ces tâches utilisent des algorithmes provenant de méthodes d'assimilation de
 données, de méthodes d'optimisation ou de méthodes avec réduction. On renvoie à
-la section :ref:`section_theory` et à celle des
+la section générale donnant :ref:`section_theory` et à celle des
 :ref:`section_reference_assimilation` pour les détails algorithmiques
 sous-jacents.
 
index b75961ac742732c74f4bb493439fff88b17f318c..71448c220f1d4f25a5629ea4a929fa524bc4312d 100644 (file)
@@ -542,6 +542,10 @@ Approfondir l'estimation d'état par des méthodes d'optimisation
 
 .. index:: single: estimation d'état
 .. index:: single: méthodes d'optimisation
+.. index:: single: Optimisation locale
+.. index:: single: Locale (optimisation)
+.. index:: single: Optimisation globale
+.. index:: single: Globale (optimisation)
 .. index:: single: DerivativeFreeOptimization
 .. index:: single: ParticleSwarmOptimization
 .. index:: single: DifferentialEvolution
index 256c38a765483378a4d8f87d6fc51793d6db9f2b..57885e0dc454524d8c927fe7041a683c7c1e8752 100644 (file)
@@ -42,6 +42,11 @@ import logging
 # ==============================================================================
 class Aidsm(object):
     """ ADAO Internal Data Structure Model """
+    __slots__ = (
+        "__name", "__objname", "__directory", "__case", "__parent",
+        "__adaoObject", "__StoredInputs", "__PostAnalysis", "__Concepts",
+        )
+    #
     def __init__(self, name = "", addViewers=None):
         self.__name         = str(name)
         self.__objname      = None
index 8120baffce21c55b4d18042652d09529bbeb54ea..3ac26addb66f387721728ce1da36a0ba37509644 100644 (file)
@@ -33,6 +33,8 @@ class AssimilationStudy(_Aidsm):
     """
     Generic ADAO TUI builder
     """
+    __slots__ = ()
+    #
     def __init__(self, name = ""):
         _Aidsm.__init__(self, name)
 
index 6c8666d6255b9bd489ba1c2b01d5d13e7fdeda00..2b20ae6d30cea878702e594d02a29c480a87f366 100644 (file)
@@ -42,6 +42,11 @@ class CacheManager(object):
     """
     Classe générale de gestion d'un cache de calculs
     """
+    __slots__ = (
+        "__tolerBP", "__lengthOR", "__initlnOR", "__seenNames", "__enabled",
+        "__listOPCV",
+        )
+    #
     def __init__(self,
                  toleranceInRedundancy = 1.e-18,
                  lengthOfRedundancy    = -1,
@@ -116,6 +121,12 @@ class Operator(object):
     """
     Classe générale d'interface de type opérateur simple
     """
+    __slots__ = (
+        "__name", "__NbCallsAsMatrix", "__NbCallsAsMethod",
+        "__NbCallsOfCached", "__reduceM", "__avoidRC", "__inputAsMF",
+        "__mpEnabled", "__extraArgs", "__Method", "__Matrix", "__Type",
+        )
+    #
     NbCallsAsMatrix = 0
     NbCallsAsMethod = 0
     NbCallsOfCached = 0
@@ -416,6 +427,10 @@ class FullOperator(object):
     Classe générale d'interface de type opérateur complet
     (Direct, Linéaire Tangent, Adjoint)
     """
+    __slots__ = (
+        "__name", "__check", "__extraArgs", "__FO", "__T",
+        )
+    #
     def __init__(self,
                  name             = "GenericFullOperator",
                  asMatrix         = None,
@@ -657,6 +672,13 @@ class Algorithm(object):
 
     Une classe élémentaire d'algorithme doit implémenter la méthode "run".
     """
+    __slots__ = (
+        "_name", "_parameters", "__internal_state", "__required_parameters",
+        "_m", "__variable_names_not_public", "__canonical_parameter_name",
+        "__canonical_stored_name", "__replace_by_the_new_name",
+        "StoredVariables",
+        )
+    #
     def __init__(self, name):
         """
         L'initialisation présente permet de fabriquer des variables de stockage
@@ -1173,6 +1195,10 @@ class PartialAlgorithm(object):
     action avancée comme la vérification . Pour les méthodes reprises ici,
     le fonctionnement est identique à celles de la classe "Algorithm".
     """
+    __slots__ = (
+        "_name", "_parameters", "StoredVariables", "__canonical_stored_name",
+        )
+    #
     def __init__(self, name):
         self._name = str( name )
         self._parameters = {"StoreSupplementaryCalculations":[]}
@@ -1211,6 +1237,12 @@ class AlgorithmAndParameters(object):
     """
     Classe générale d'interface d'action pour l'algorithme et ses paramètres
     """
+    __slots__ = (
+        "__name", "__algorithm", "__algorithmFile", "__algorithmName", "__A",
+        "__P", "__Xb", "__Y", "__U", "__HO", "__EM", "__CM", "__B", "__R",
+        "__Q", "__variable_names_not_public",
+        )
+    #
     def __init__(self,
                  name               = "GenericAlgorithm",
                  asAlgorithm        = None,
@@ -1614,6 +1646,8 @@ class RegulationAndParameters(object):
     """
     Classe générale d'interface d'action pour la régulation et ses paramètres
     """
+    __slots__ = ("__name", "__P")
+    #
     def __init__(self,
                  name               = "GenericRegulation",
                  asAlgorithm        = None,
@@ -1653,6 +1687,8 @@ class DataObserver(object):
     """
     Classe générale d'interface de type observer
     """
+    __slots__ = ("__name", "__V", "__O", "__I")
+    #
     def __init__(self,
                  name        = "GenericObserver",
                  onVariable  = None,
@@ -1716,6 +1752,8 @@ class UserScript(object):
     """
     Classe générale d'interface de type texte de script utilisateur
     """
+    __slots__ = ("__name", "__F")
+    #
     def __init__(self,
                  name       = "GenericUserScript",
                  asTemplate = None,
@@ -1750,6 +1788,8 @@ class ExternalParameters(object):
     """
     Classe générale d'interface pour le stockage des paramètres externes
     """
+    __slots__ = ("__name", "__P")
+    #
     def __init__(self,
                  name        = "GenericExternalParameters",
                  asDict      = None,
@@ -1799,6 +1839,11 @@ class State(object):
     """
     Classe générale d'interface de type état
     """
+    __slots__ = (
+        "__name", "__check", "__V", "__T", "__is_vector", "__is_series",
+        "shape", "size",
+        )
+    #
     def __init__(self,
                  name               = "GenericVector",
                  asVector           = None,
@@ -1931,6 +1976,11 @@ class Covariance(object):
     """
     Classe générale d'interface de type covariance
     """
+    __slots__ = (
+        "__name", "__check", "__C", "__is_scalar", "__is_vector", "__is_matrix",
+        "__is_object", "shape", "size",
+        )
+    #
     def __init__(self,
                  name          = "GenericCovariance",
                  asCovariance  = None,
@@ -2368,6 +2418,8 @@ class Observer2Func(object):
     """
     Création d'une fonction d'observateur a partir de son texte
     """
+    __slots__ = ("__corps")
+    #
     def __init__(self, corps=""):
         self.__corps = corps
     def func(self,var,info):
@@ -2382,6 +2434,11 @@ class CaseLogger(object):
     """
     Conservation des commandes de création d'un cas
     """
+    __slots__ = (
+        "__name", "__objname", "__logSerie", "__switchoff", "__viewers",
+        "__loaders",
+        )
+    #
     def __init__(self, __name="", __objname="case", __addViewers=None, __addLoaders=None):
         self.__name     = str(__name)
         self.__objname  = str(__objname)
index e09b785ce7d2c3e11e1ecd3298377222e4f17caa..afa9e1f568ba095c02cba2733b04a10ae72efae0 100644 (file)
@@ -87,6 +87,8 @@ class ExtendedLogging(object):
     Logger général pour disposer conjointement de la sortie standard et de la
     sortie sur fichier
     """
+    __slots__ = ("__logfile")
+    #
     def __init__(self, level=logging.WARNING):
         """
         Initialise un logging à la console pour TOUS les niveaux de messages.
index e428417a3fea64e3b3d6c3a09eee73325c7290d9..f4ff0304227a1c8888aff101aa0f296b1f61d5a3 100644 (file)
@@ -44,7 +44,8 @@ class GenericCaseViewer(object):
     """
     __slots__ = (
         "_name", "_objname", "_lineSerie", "_switchoff", "_content",
-        "_numobservers", "_object", "_missing")
+        "_numobservers", "_object", "_missing",
+        )
     #
     def __init__(self, __name="", __objname="case", __content=None, __object=None):
         "Initialisation et enregistrement de l'entete"
index 87b6895961ea41971c073b863312b1243397fbfe..4b674e4c9634fb8ac5d58d5f95c6d8c9ef5e4f15 100644 (file)
@@ -58,6 +58,14 @@ class FDApproximation(object):
     "dX" qui sera multiplié par "increment" (donc en %), et on effectue de DF
     centrées si le booléen "centeredDF" est vrai.
     """
+    __slots__ = (
+        "__name", "__extraArgs", "__mpEnabled", "__mpWorkers", "__mfEnabled",
+        "__rmEnabled", "__avoidRC", "__tolerBP", "__centeredDF", "__lengthRJ",
+        "__listJPCP", "__listJPCI", "__listJPCR", "__listJPPN", "__listJPIN",
+        "__userOperator", "__userFunction", "__increment", "__pool", "__dX",
+        "__userFunction__name", "__userFunction__modl", "__userFunction__path",
+        )
+    #
     def __init__(self,
             name                  = "FDApproximation",
             Function              = None,
index 2f86b944c0c949408208be53ad362fd9a27b3447..ff5709f026fcaefa905056bb8a867abfe1d494fc 100644 (file)
@@ -42,6 +42,11 @@ class Persistence(object):
     Classe générale de persistance définissant les accesseurs nécessaires
     (Template)
     """
+    __slots__ = (
+        "__name", "__unit", "__basetype", "__values", "__tags", "__dynamic",
+        "__g", "__title", "__ltitle", "__pause", "__dataobservers",
+        )
+    #
     def __init__(self, name="", unit="", basetype=str):
         """
         name : nom courant
@@ -786,6 +791,8 @@ class SchedulerTrigger(object):
     """
     Classe générale d'interface de type Scheduler/Trigger
     """
+    __slots__ = ()
+    #
     def __init__(self,
                  simplifiedCombo = None,
                  startTime       = 0,
@@ -807,6 +814,8 @@ class OneScalar(Persistence):
     ou des matrices comme dans les classes suivantes, mais c'est déconseillé
     pour conserver une signification claire des noms.
     """
+    __slots__ = ()
+    #
     def __init__(self, name="", unit="", basetype = float):
         Persistence.__init__(self, name, unit, basetype)
 
@@ -814,6 +823,8 @@ class OneIndex(Persistence):
     """
     Classe définissant le stockage d'une valeur unique entière (int) par pas.
     """
+    __slots__ = ()
+    #
     def __init__(self, name="", unit="", basetype = int):
         Persistence.__init__(self, name, unit, basetype)
 
@@ -822,6 +833,8 @@ class OneVector(Persistence):
     Classe de stockage d'une liste de valeurs numériques homogènes par pas. Ne
     pas utiliser cette classe pour des données hétérogènes, mais "OneList".
     """
+    __slots__ = ()
+    #
     def __init__(self, name="", unit="", basetype = numpy.ravel):
         Persistence.__init__(self, name, unit, basetype)
 
@@ -829,6 +842,8 @@ class OneMatrix(Persistence):
     """
     Classe de stockage d'une matrice de valeurs homogènes par pas.
     """
+    __slots__ = ()
+    #
     def __init__(self, name="", unit="", basetype = numpy.matrix):
         Persistence.__init__(self, name, unit, basetype)
 
@@ -838,6 +853,8 @@ class OneList(Persistence):
     pas utiliser cette classe pour des données numériques homogènes, mais
     "OneVector".
     """
+    __slots__ = ()
+    #
     def __init__(self, name="", unit="", basetype = list):
         Persistence.__init__(self, name, unit, basetype)
 
@@ -853,6 +870,8 @@ class OneNoType(Persistence):
     résultats inattendus. Cette classe n'est donc à utiliser qu'à bon escient
     volontairement, et pas du tout par défaut.
     """
+    __slots__ = ()
+    #
     def __init__(self, name="", unit="", basetype = NoType):
         Persistence.__init__(self, name, unit, basetype)
 
@@ -865,6 +884,8 @@ class CompositePersistence(object):
     Des objets par défaut sont prévus, et des objets supplémentaires peuvent
     être ajoutés.
     """
+    __slots__ = ("__name", "__StoredObjects")
+    #
     def __init__(self, name="", defaults=True):
         """
         name : nom courant