2016-05-15 42 views
3

所以,我正在制作一个基于文本的游戏来学习python语言。我无法获得返回功能...我不能得到返回函数

这是我的代码;

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) 

我跑这之后我:

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

可能的复制[Python的\ _ \ _海峡\ _ \ _和列表(http://stackoverflow.com/questions/727761/python- str-and-lists) – syntonym

回答

3

您需要实现__repr__因为你的对象是一个列表内。

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] 

没有实现__repr__,你会得到预期的输出,如果遍历列表:

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

您需要定义__repr__以及

def __repr__(self): 
     return self.name 

例如 -

>>> 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

只需添加的__repr__方法WoodenStaff

+0

你可以添加一些解释,也许一些示例代码吗? – Rakete1111

相关问题