2016-08-03 11 views
0

Dies ist ein Übungscode. Ich verstehe alles außer, wie man die Gewichte vergleicht. Ich möchte, dass das andere Gewicht 40 ist und "Spot Wins!"Objektorientierte Programmierung (Python) Code

class Pet: 

def __init__(self,myname,mykind,myweight,mycost): 
    self.name = myname 
    self.kind = mykind 
    self.weight = myweight 
    self.cost = mycost 
    self.speak() 
    self.isexpensive() 
    # self.battle(40) This is where the error happens 

def speak(self): 
    if self.kind == 'dog': 
     print('Woof!') 
    elif self.kind == 'cat': 
     print('Meow!') 
    else: 
     print('I am mute')    

def battle(self,other): 
    if self.weight > other.weight: 
     print(self.name + ' wins!') 
    else: 
     print(other.name + ' wins!') 

def grow(self): 
    self.weight = self.weight + 5 

def isexpensive(self): 
    if self.cost > 500: 
     return True 
    else: 
     return False 

spot = Pet('Spot','dog',50,550) 
+0

Sie setzen 'self.battle (40)' nicht im Konstruktor. Sie rufen 'spot.battle (Pet (...))' später auf der ** Instanz ** der Pet-Klasse auf. –

Antwort

1

battle() erfordert etwas mit einem .weight Attribute (wie ein Pet), aber Sie vorbei an einer Reihe (integer). Sie sollten es nicht in die __init__ Funktion einfügen, da eine der Möglichkeiten wäre, eine weitere Pet zu erstellen, die versucht, eine weitere Pet zu battle ad Infinium zu machen.

Wenn Sie jedoch ein weiteres Pet, Lassie nach spot hinzufügen und spot.battle(Lassie) mitteilen, wird es mit Ihrer Funktion verglichen.

+0

danke ich bekomme es jetzt – Mia

Verwandte Themen