0
votes

Comment mettre à jour le dictionnaire d'un trait mappé après que je l'ai déjà construit?

Je dois mettre à jour le dictionnaire d'un trait mappé quelque temps après la création initiale des traitements. Comment puis-je faire cela? Le code suivant: xxx

rendements: xxx


0 commentaires

3 Réponses :


0
votes

D'accord, le code suivant a fonctionné: xxx

Note: Les lignes commentées sont des choses que j'ai essayées, qui ont pas travail .


0 commentaires

0
votes

Je ne suis pas sûr de comprendre ce que vous êtes après, mais je peux faire quelques recommandations:

  1. est un bon choix ici si vous autorisez à la fois Aucun et dict . .
  2. Utilisez Initialisation dynamique pour créer une valeur pour un trait au moment de l'exécution. Il est préférable d'utiliser un __ init __ méthode.
  3. Si vous avez vraiment besoin d'un __ init __ méthode, vous doit appel super à l'intérieur de celui-ci pour fonctionner correctement, par exemple. `Super () init (* args, ** kwargs)

    Voici une version de votre code qui fonctionne et je pense que résout votre problème. xxx

    et voici quelques commentaires sur le code qui n'a pas fonctionné. La ligne self.zap = trait ("Aucun", new_dict) ci-dessous ne fonctionne pas car il essaie de créer un objet objet mais self.zap accepte uniquement Aucun ou dict . Ma recommandation est d'utiliser des définitions de trait uniquement pour la saisie, au niveau de la classe. Dans les méthodes, utilisez des types de python réguliers. xxx


1 commentaires

Merci pour votre réponse! En réponse à vos points numérotés: 1. Je ne veux pas d'un , juste un dict . 2. L'initialisation dynamique ne me permet toujours que de définir le contenu du trait une fois; J'ai besoin de redéfinir le contenu des traitements de plusieurs reprises lors de l'exécution du programme. 3. Oui, désolé, j'aurais dû inclure cela dans mon exemple de code, pour être complètement correct. Il n'est pas clair pour moi de savoir comment votre solution proposée résout mon problème, car je dois redéfinir les contenus du trait à plusieurs reprises lors de l'exécution du programme.



0
votes

Voici la deuxième tentative d'une réponse donnée à la Commentaire de l'affiche original

Si vous souhaitez que le type de zap code> soit dict code> et Seuls dict code>, puis définissez-le comme tel. Vous pouvez également aligner la valeur initiale s'il ne doit pas nécessairement être ordinateur au moment de l'exécution: p> xxx pré>

si elle doit être calculée au moment de l'exécution, puis utilisez Initialisation dynamique à initialiser la valeur: P>

>>> class Bar(HasTraits):
...     zap = Dict()
...
...     def _zap_default(self):
...         default = {}
...         default[1] = 'a'
...         return default
...
...     def add_pair(self, key, value):
...         self.zap[key] = value
...
>>> bar_method = Bar()
>>> bar_method.zap
{1: 'a'}
>>> bar_method.add_pair(26, 'z')
>>> bar_method.zap
{1: 'a', 26: 'z'}


1 commentaires

Merci de continuer à essayer de m'aider à résoudre ce problème! Je crains d'avoir fait un travail terrible d'expliquer clairement ce que je veux. Donc, j'ai encore essayé, à partir de zéro: Stackoverflow.com/questions/59010527/...