<p>这是你的代码的一个版本。。。它甚至可以做你想做的事:</p>
<pre><code>class Item:
def __init__(self, cat, comment, worth, amount):
self.cat = cat
self.comment= comment
self.worth = worth
self.amount = amount
def show_formatted(self):
print('{:>10}{:>10}{:>10}{:>10}'.format(self.cat,
self.comment,
self.worth,
self.amount,
)
)
return None
class Collection:
def __init__(self):
self.items = []
def add_item(self, cat, comment, worth, amount):
item = Item(cat, comment, worth, amount)
self.items.append(item)
return None
def show_all_items(self):
for item in self.items:
item.show_formatted()
return None
def get_all_cats(self):
return [item.cat for item in self.items]
</code></pre>
<p>您可以使用以下方法进行测试:</p>
<pre><code>>>> c = Collection() # Instantiate a Collection object.
>>> c.add_item('C', 'comment', 10, 1000) # Add an item to it.
>>> c.add_item('C', 'words', 9, 999) # Add another.
>>> c.show_all_items()
C comment 10 1000
C words 9 999
</code></pre>
<p>这里发生了很多事情:</p>
<ul>
<li>我将<code>AllItems</code>类的名称改为<code>Item</code>,因为它似乎想要表示一个单独的东西(来自您编写的<code>__ini__()</code>)。你知道吗</li>
<li>我更改了<code>ShowAllFormatted</code>方法的名称,因为类的每个实例(<code>self</code>,基本上)只需要担心一件事:本身。它不知道/不在乎成为收藏的一部分。你知道吗</li>
<li><code>Collection</code>类中的<code>add_item</code>方法不接受任何参数,因此我添加了它们。现在它可以用一些数据实例化<code>Item</code>类的实例。你知道吗</li>
<li>我摆脱了<code>ShowAllCat</code>,因为我不确定它应该做什么。可以将cat名称作为参数,然后使用该cat循环项目,并调用它们的<code>show_formatted</code>方法?差不多吧。但是您不需要将任何内容传递给<code>show_formatted</code>,它现在不需要任何其他参数(但是它可以控制这些内容的打印方式)。你知道吗</li>
</ul>
<p>我修复了一些其他的东西,并使用了更多的python名称(大写字母表示类,小写字母表示其他所有内容)。但其余大部分都没有改变。你知道吗</p>
<p>别忘了给所有类和方法添加docstring!你知道吗</p>