2016-05-15 13 views
3

So mache ich ein Text-basiertes Spiel, um die Python-Sprache zu lernen. und ich kann nicht die Rückkehr Funktion arbeiten ...Ich kann nicht die Rückkehrfunktion arbeiten

Hier ist mein Code;

class Weapon: 
    def __str__(self): 
     return self.name 

class WoodenStaff(Weapon): 
    def __init__(self): 
     self.name = "Wooden Staff" 
     self.description = "Basic Staff" 
     self.damage = 5 

inventory = [WoodenStaff()] 
print (inventory) 

Nachdem ich dies laufe ich bekam:

[<__main__.WoodenStaff object at 0x000001E9F192CAC8>] 
+0

Mögliche Duplikat hinzufügen [Python \ _ \ _ str \ _ \ _ und Listen] (http://stackoverflow.com/questions/727761/python- str-und-lists) – syntonym

Antwort

3

Sie müssen __repr__ implementieren, da das Objekt in einer Liste.

class Weapon: 
    def __str__(self): 
     return self.name 

    def __repr__(self): 
     return self.name 

class WoodenStaff(Weapon): 
    def __init__(self): 
     self.name = "Wooden Staff" 
     self.description = "Basic Staff" 
     self.damage = 5 

inventory = [WoodenStaff()] 
print (inventory) 
>> [Wooden Staff] 

Ohne __repr__ Implementierung Sie die erwartete Ausgabe, wenn das Iterieren über die Liste erhalten:

class Weapon: 
    def __str__(self): 
     return self.name 

class WoodenStaff(Weapon): 
    def __init__(self): 
     self.name = "Wooden Staff" 
     self.description = "Basic Staff" 
     self.damage = 5 

inventory = [WoodenStaff()] 
for weapon in inventory: 
    print(weapon) 
>> Wooden Stuff 
2

Sie müssen __repr__ definieren als auch

def __repr__(self): 
     return self.name 

z.B. -

>>> class Weapon: 
...  def __str__(self): 
...   return self.name 
...  def __repr__(self): 
...   return self.name 
... 
>>> class WoodenStaff(Weapon): 
...  def __init__(self): 
...   self.name = 'Foo' 
... 
>>> [WoodenStaff()] 
[Foo] 
0

Nur ein __repr__ Methode WoodenStaff Klasse

+0

Könnten Sie bitte eine Erklärung und vielleicht einen Beispielcode hinzufügen? – Rakete1111