Attribut erreur: 'liste' de l'objet n'a pas d'attribut "gainWeight'
Pourquoi mon code me donner l'erreur Attribute error: 'list' object has no attribute 'gainWeight'
?
Code de classe:
class Pig():
def __init__(self, name, age, weight, value):
self.name = name
self.age = age
self.weight = weight
self.value = value
def Weight(self):
self.weight = randrange(50,250)
def growOlder(self):
self.age += 1
def gainWeight(self, weight):
self.weight += 5
def runAndGainValue(self):
self.value += 5
def __str__(self):
a = self.name + " "
a += str(self.age) + " "
a += str(self.weight) + " "
a += str(self.value) + " "
return a
Et le code du programme principal:
def work_function():
work = input("What do you want to do for work today?"
"\nPress 1 to feed your animals"
"\nPress 2 to take them out in the yard"
"\nPress 3 to your animals to sleep"
"\nPress 4 to go back to main menu.\n")
if work == "1":
yourfarm.printAnimals()
print ("are all very happy to be fed and have gained some weight!\nLook at the weight now and see for yourself!")
p.gainWeight(+5)
#Here is where the problem lies.
yourfarm.printAnimals()
p est une liste avec les éléments pour mes animaux.
Je ne peux pas comprendre pourquoi je reçois ce message d'erreur.
- Si
p
est une liste, alors vous ne pouvez pas appelergainWeight
sur elle, comme les listes n'ont pas cette méthode. - Essayez
p[0]
(ou tout autre animal que vous voulez). Que vais travailler. - Pas liés à votre question, mais s'il vous plaît noter que votre
gainWeight
méthode ne tient pas compte de laweight
argument. - Okey pas sûr de ce que tu veux dire, que faut-il faire pour mon programme? Et est-il de toute façon pour résoudre le problème?
- Alors jetez un oeil à cette méthode et de réfléchir à ce qu'il fait quand je l'appelle
.gainWeight(10)
et ce qu'il est (probablement) censé être. - glglgl déjà décrit le problème. Utilisation
self.weight += weight
au lieu deself.weight += 5
pour le résoudre. - Ah je vois, merci! Est-ce le même code que j'utilise si je veux le runAndGainValue fonction aswell? Parce que quand j'ai essayer le code que j'obtiens "je ne peux pas convertir int objet de str implicity" :S
- probablement que vous avez passé un string au lieu d'un entier pour le constructeur. Si ce problème persiste, veuillez ouvrir une nouvelle question contenant le code de l'endroit où vous créez le
Pig
objets. - Ok, je vais ouvrir une nouvelle question, parce que je ne peux pas la comprendre.
InformationsquelleAutor Bondenn | 2013-11-03
Vous devez vous connecter pour publier un commentaire.
Dans votre deuxième extrait de code, vous avez besoin d'accéder aux éléments de la liste, et non pas la liste elle-même:
Vous avez besoin d'une boucle sur tous vos éléments, et de les appeler
gainWeight
sur eux, car c'est unPig
qui a de la méthode, et non pas la liste: