2016-10-06 6 views
1

quelqu'un peut me aider sur l'utilisation de « moi » à l'intérieur « avec » code ci-dessous jette. « NameError. Nom « auto » est pas défini »NameError: nom « auto » est pas défini » lors de l'utilisation à l'intérieur avec la déclaration

class Versions: 

    def __init__(self): 
     self.module_a = '1.0.0' 
     self.module_b = '1.0.0' 

     if os.path.exists('config.json'): 
      with open('config.json') as f: 
       configs = json.load(f) 
       for config in configs: 
        setattr(self, config, configs[config]) 

Traceback

NameError         Traceback (most recent call last) 
<ipython-input-5-ed6a4ca551d4> in <module>() 
     3     configs = json.load(f) 
     4     for config in configs: 
----> 5       setattr(self, config, configs[config]) 
     6 

NameError: name 'self' is not defined 

Merci

+3

Veuillez ajouter le suivi d'erreur complet à votre question! –

+1

A côté: vous pouvez désindexer la boucle for –

+0

Le code que vous avez dans cette question est correct, peut-être que vous avez un problème d'indentation qui permet à Python de penser que l'instruction if n'est pas dans le def. – RemcoGerlich

Répondre

2

s'il vous plaît vérifier votre empreinte - si vous mélangez des espaces et des onglets, cela peut se produire;.. l'utilisation -tt $ python pour vérifier fonctionne votre extrait de code fi pour moi.

+0

avez-vous un fichier config.json dans palce? – feroz

+0

Oui, j'ai vérifié avec le fichier de configuration simple et sans elle - aucune exception ne s'est produite. – MateuszL