web-dev-qa-db-fra.com

Python NameError: le nom n'est pas défini

J'ai un script python et je reçois le message d'erreur suivant:

Traceback (most recent call last):
  File "C:\Users\Tim\Desktop\pop-erp\test.py", line 1, in <module>  
  s = Something()
  NameError: name 'Something' is not defined

Voici le code qui cause le problème:

s = Something()
s.out()

class Something:
    def out():
        print("it works")

Ceci est exécuté avec Python 3.3.0 sous Windows 7 x86-64.

Pourquoi la classe Something ne peut-elle pas être trouvée?

39
user1899679

Définissez la classe avant de l'utiliser:

class Something:
    def out(self):
        print("it works")

s = Something()
s.out()

Vous devez passer self comme premier argument à toutes les méthodes d'instance.

70
Blender

Vous devez définir la classe avant de créer une instance de la classe. Déplacez l'invocation de Something à la fin du script.

Vous pouvez essayer de mettre la charrue avant les boeufs et d’invoquer des procédures avant qu’elles ne soient définies, mais ce sera un vilain bidouillage et vous devrez rouler la vôtre comme défini ici:

Définit la définition de la fonction dans un ordre de fichier python indépendant

2
user574435