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

J'ai un script python et je reçois l'erreur suivante:

Traceback (most recent call last):
  File "C:UsersTimDesktoppop-erptest.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?

35
demandé sur Eric Leschinski 2013-02-11 03:56:13

2 réponses

Définir 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.

59
répondu Blender 2017-01-17 21:28:05

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

Vous pouvez essayer de mettre la charrette avant le cheval et invoquer des procédures avant qu'elles ne soient définies, mais ce sera un hack laid et vous devrez rouler le vôtre comme défini ici:

Rendre la définition de fonction dans un ordre de fichier python indépendante

2
répondu user574435 2017-05-23 12:32:14