2017-04-27 1 views
2

Je vais avoir des problèmes avec le code Python suivant:Python NameError (DEF) n'est pas défini

class Methods: 

    def method1(n): 
     #method1 code 

    def method2(N): 
     #some method2 code 
      for number in method1(1): 
       #more method2 code 

def main(): 
    m = Methods 
    for number in m.method2(4): 
      #conditional code goes here 

if __name__ == '__main__': 
    main() 

Quand je lance ce code, je reçois NameError: nom 'method1' est pas défini. Comment puis-je résoudre cette erreur?

+0

Vous devez utiliser 'self.method1' –

+0

double possible de [nom de la fonction est pas défini dans la classe python] (http://stackoverflow.com/questions/28805028/function-name-is- undefined-in-python-class) –

Répondre

1

Ajoutez-vous simplement. devant elle:

aussi changer votre méthode signitures à:

def method1(self, n): 

et

def method2(self, n): 
+0

Merci beaucoup. Ça marche! – maestro777

+0

@ maestro777, profitez-en! –

1

Changer votre code comme suit:

class Methods: 

    def method1(self,n): 
     #method1 code 

    def method2(self,N): 
     #some method2 code 
     for number in self.method1(1): 
      #more method2 code 

def main(): 
    m = Methods() 
    for number in m.method2(4): 
     #conditional code goes here 

if __name__ == '__main__': 
    main() 
  1. Ajouter un paramètre self à toutes les méthodes de votre classe
  2. Pour appeler une méthode à l'intérieur de votre classe, utilisez self.methodName (parameters)
  3. Pour créer une instance de votre classe, vous devez écrire le nom de la classe avec parenteses pour ex: m = Méthodes()