2016-05-15 8 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の\ _ \ _ STR \ _ \ _とリスト](http://stackoverflow.com/questions/727761/python-の可能な複製に__repr__メソッドを追加str-and-lists) – syntonym

答えて

3

あなたのオブジェクトがリスト内にあるので、あなたは__repr__を実装する必要があります。 __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] 

、あなたは反復処理であれば、リストの上に予想される出力を得る:

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

をあなたにも

def __repr__(self): 
     return self.name 

__repr__を定義する必要があり、例えば -

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

だけWoodenStaffクラス

+0

いくつかの説明を追加して、多分いくつかのサンプルコードをお願いしますか? – Rakete1111

関連する問題