【发布时间】:2019-05-17 19:56:36
【问题描述】:
我有一个属性由几个列表组成的类(今天是 8 个,但它肯定会增长,因为我的代码依赖于另一个项目的 prod 上使用的先前代码)
这个类有一个__str__ 函数来漂亮地打印列表的信息。今天,该函数显示有关每个列表的信息,但即调用它们,我不喜欢那样,因为每次我的类属性更改(添加/删除列表)时,我都必须更新此方法
我正在寻找一种方法来动态迭代我的类属性以显示信息
作为一个例子,让我们想象下面的类
class shopping_cart:
def __init__(self):
self.fruits = []
self.vegetables = []
self.meat = []
self.bread = []
def __str__(self):
msg = ""
msg += "shopping cart content\n"
msg += "---------------------\n"
msg += "---fruits-----------: " + len(self.fruits) +"\n
msg += "---vegetables-------: " + len(self.vegetables) +"\n
msg += "---meat-------------: " + len(self.meat) +"\n
msg += "---bread------------: " + len(self.bread) +"\n
return msg
如您所见,维护成本很高。我正在寻找更有活力的东西,看起来更像
class shopping_cart:
def __init__(self):
self.fruits = []
self.vegetables = []
self.meat = []
self.bread = []
def __str__(self):
msg = ""
msg += "shopping cart content\n"
msg += "---------------------\n"
for item in <list of my class attributes>:
msg += "---" + item +"-----------: " + len(item) +"\n
return msg
易于阅读且易于维护。
【问题讨论】:
-
在你的例子中,我宁愿使用一个字典而不是一堆不相关的属性。
标签: python string class attributes