2009-10-21 10 views
2

J'essaie de faire une classe qui va obtenir une liste de nombres puis les imprimer quand j'en ai besoin. Je dois être capable de faire 2 objets de la classe pour obtenir deux listes différentes. Voici ce que j'ai jusqu'à présentPourquoi cette classe python simple ne fonctionne-t-elle pas?

class getlist: 
    def newlist(self,*number): 
     lst=[] 
     self.number=number 
     lst.append(number) 

    def printlist(self): 
     return lst 

Désolé, je ne suis pas très clair, je suis un peu nouveau pour oop, pouvez-vous s'il vous plaît aidez-moi parce que je ne sais pas ce que je fais mal. Merci.

+4

L'indentation est importante en Python, donc cet exemple ne sera jamais exécuté. Veuillez le corriger pour que nous puissions voir ce que vous essayez de faire. –

+1

Pourquoi avez-vous besoin d'objets ici, les listes ne vous suffisent pas? – SilentGhost

+0

@SilentGhost - bien que ce soit un point valable en général, Michael fait probablement un programme de jouets comme exercice d'apprentissage. –

Répondre

7

En Python, lorsque vous écrivez des méthodes dans un objet, vous devez préfixer toutes les références aux variables appartenant à cet objet avec self. - comme ceci:

class getlist: 
    def newlist(self,*number): 
     self.lst=[] 
     self.lst += number #I changed this to add all args to the list 

    def printlist(self): 
     return self.lst 

Le code que vous aviez avant a été créer et modifier une variable locale appelée LST, il semble « disparaître » entre les appels.

En outre, il est habituel de faire un constructeur, qui a le nom spécial __init__:

class getlist: 
    #Init constructor 
    def __init__(self,*number): 
     self.lst=[] 
     self.lst += number #I changed this to add all args to the list 

    def printlist(self): 
     return self.lst 

Enfin, utiliser comme si

>>> newlist=getlist(1,2,3, [4,5]) 
>>> newlist.printlist() 
[1, 2, 3, [4,5]]  
+0

C'est génial, merci beaucoup! – Michael

+0

@Michael - Mon plaisir :) –

3

Vous devez utiliser "self.lst" au lieu de "lst". Sans le "self", c'est juste une variable interne à la méthode actuelle.

+0

Thats brillant, qui semble l'avoir trié, Merci pour l'aide tout le monde! – Michael

Questions connexes