是否可以在循环中生成变量名?你知道吗
简单的情况是:
class product():
self.shop1_name = None
self.shop1_price = None
self.shop2_name = None
self.shop2_price = None
...
p = product()
# shops is a list of shops
for i, shop in enumerate(shops[0:5]):
p.shop+i+1_name = shop.name # so shop1_name in first loop, shop2_name in second etc...
p.shop+i+1_price = shop.price
所以有很多属性shop1_price, shop2_price...shop10_price
,我想把它们填充到一个循环中,而不是手工编写所有这些属性。你知道吗
有可能吗?你知道吗
是的。可以使用
setattr
内置函数动态地向对象添加属性。你真的想那样做吗?Probably not。而不是:shop1_name, shop2_name, ...
为什么没有一个列表?你知道吗更好的是,由于商店似乎有许多与之相关联的数据(
name
,price
,…),因此可以使用结构化(或非结构化)记录类型来表示商店,然后创建商店列表。记录类型的示例可以像dict
或collections.namedtuple
一样简单,也可以添加一个轻量级类来保存车间数据:现在,与
shop1_name
不同的是,您有shops[0].name
(这其实没有太大区别),而且您还可以将所有商店作为一个集合进行迭代。你知道吗使用类似dict的数据结构:
使用字典还是列表?你知道吗
添加商店用途:
或者只是列出:
加上他的用法:
相关问题 更多 >
编程相关推荐