回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>这里有一个超类:</p>
<pre><code>class Item:
def __init__(self, name, desc, usable, value):
self.name = name
self.desc = desc
self.usable = usable
self.value = value
def __str__(self):
return "{}\n=====\n{}\nValue: {}\n".format(self.name, self.desc, self.usable, self.value)
</code></pre>
<p>以及这个子类(除其他外):</p>
<pre><code>class HPot(Item):
def __init__(self):
super().__init__(desc="Heals for 5 HP.",
name="Health Potion",
usable=0,
value=3)
IHpot = HPot
</code></pre>
<p>在一个叫做<code>Inv</code>的列表中:</p>
<pre><code>Inv = [IHpot]
</code></pre>
<p>当我<code>print(Inv)</code>的时候,很明显,这发生了:</p>
<pre><code>[<class 'items.HPot'>]
</code></pre>
<p>所以我写了这个代码:</p>
<pre><code>def openinv():
print("Your inventory:")
print(', '.join(Inv))
print("----------")
# [...]
</code></pre>
<p>然后就发生了:</p>
<pre><code>Your inventory:
Traceback (most recent call last):
File "C:/Users/Bernardo/PycharmProjects/EndlessDungeon/inventory.py", line
29, in <module>
openinv()
File "C:/Users/Bernardo/PycharmProjects/EndlessDungeon/inventory.py", line 18, in openinv
print(', '.join(Inv))
TypeError: sequence item 0: expected str instance, type found
Process finished with exit code 1
</code></pre>
<p>我原以为<code>return "{}\n=====\n{}\nValue: {}\n".format(self.name, self.desc, self.usable, self.value)</code>会有帮助(它在<code>Item</code>超类中),但我在网上尝试或搜索的任何东西都帮不了我。我想像<code>Health Potion</code>那样打印它,并且仍然能够访问类<code>name, desc, usable,</code>等。我该怎么做?你知道吗</p>