我在遍历一个参数并仅显示“ cat”参数时遇到问题。请记住,我正在将项目添加到一个空列表self.item。我也正在使用showAllFormatted函数来格式化数据。
我尝试循环,然后使用“ return AllItems.ShowAllFormatted(i.cat)”,但是将项目添加到空列表后没有结果显示。
class AllItems:
def __init__(self, cat,comment, worth, amount):
self.cat = cat
self.comment= comment
self.worth = worth
self.amount = amount
def ShowAllFormatted(self):
print('{:>10}:>10}{:>10}{:>10}'.format(self.cat,
self.comment,self.worth,self.amount))
class Collection:
def __init__(self):
self.an_item = []
def add_item(self):
item = AllItems(cat, comment, worth,amount)
self.item.append(item)
def ShowAllItems(self):
for i in self.an_item:
AllItems.ShowAllFormatted(i)
return i
def showAllCat(self):
for item in self.an_item:
return item.cat
答案 0 :(得分:0)
我认为您在构造函数中的意思是self.category = cat
。
答案 1 :(得分:0)
这是您的代码的有效版本……它甚至可以满足您的要求:
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]
您可以使用以下方法进行测试:
>>> 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
这里发生了很多事情:
AllItems
类的名称更改为Item
,因为它似乎想代表一件事(来自您编写的__ini__()
)。 ShowAllFormatted
方法的名称,因为该类的每个实例(基本上是self
)只需要担心一件事:本身。 IT部门不知道/不在乎成为集合的一部分。add_item
类中的Collection
方法不接受任何参数,因此我添加了它们。现在,它可以使用一些数据实例化Item
类的实例。ShowAllCat
,因为我不确定该怎么做。也许以猫的名字作为参数,然后循环使用该猫的项目,然后调用其show_formatted
方法?这样的事情。但是您不需要将任何内容传递给show_formatted
,它现在不需要任何其他参数(但是可以说是要控制事物的打印方式)。我修复了其他几件事,并使用了更多的Pythonic名称(类的首字母大写,其他所有字母小写)。但是其余大部分都没有改变。
别忘了向所有类和方法添加文档字符串!