【发布时间】:2018-04-13 14:22:28
【问题描述】:
好的。我正在建立一个模型来描述一些管理决策对森林的影响。每个森林都是森林类的一个实例,您可以在下面看到一个简化版本:
class forest():
instancelist = [] # a list of all the forest instances so I can run functions on all of them at once
growth_rate = 2 #very simple rate of growth (not realistic!)
felling_year = 50 #all forest areas are felled at age 50
def __init__(self, x=0, y=0,age=0,size=0):
self.instancelist.append(self) # add the forest area to the instance list
self.x = x # x coordinate
self.y = y # y coordinate
self.age = age # age, not all forests are planted on bare sites, - we have some pre-existing ones to consider.
self.size = size # very rough - but this is an indicator of the physical volume of timber (not area)
我现在可以生成一个森林对象,例如:
f = forest(1,1,20,40)
所以,我遇到的困难是我需要生成许多森林块(所以我们可以看到对更广泛区域的影响)。为此,我需要创建很多区域。
如果我不指定任何属性,我可以轻松做到这一点:
forests = [forest() for x in range(20)]
但是如果不手动指定它们,我看不出如何生成大量具有独特属性的区域。有没有一种方法可以让我从其他来源(列表、元组、csv 等)输入数据并使用它来建立不同对象的清单?
对不起,如果这是一个愚蠢的问题(众所周知,我不时会问他们),但这真的让我很困惑。
【问题讨论】:
-
属性存储在哪里?好像有4个。因此,您是否有一个列表列表[每个内部列表有 4 个项目]?还是发电机?
-
在这个例子中有 4 个 - 都被剥离了,但可能还有很多其他的。我还没有将它们全部添加,所以我可以以任何最有效的格式制作它们。最终,我可能需要为启动条件使用某种形式的配置文件 - 但这还有一段路要走。
-
好的,我想你的问题应该归结为将配置文件读入列表、字典或其他格式的列表。然后使用列表推导。
标签: python python-3.x oop