Python 实例化的动态命名
这是一个概念性问题,我需要为网络模拟实例化一些“节点”。命名是个问题-我需要一个方法来自动生成实例的名称(任何允许我在创建后跟踪和引用节点的方法都可以) 为了更好地了解我需要什么,下面是大多数循环在问题所在位置嵌入hashtags后的样子。x和y将在父函数中定义Python 实例化的动态命名,python,oop,instantiation,factory,Python,Oop,Instantiation,Factory,这是一个概念性问题,我需要为网络模拟实例化一些“节点”。命名是个问题-我需要一个方法来自动生成实例的名称(任何允许我在创建后跟踪和引用节点的方法都可以) 为了更好地了解我需要什么,下面是大多数循环在问题所在位置嵌入hashtags后的样子。x和y将在父函数中定义 for n in range(1000): #n, but somehow converted into the name of the dict# = { 'address':n,
for n in range(1000):
#n, but somehow converted into the name of the dict# = {
'address':n,
'resistance':x,
'special':[],
'parent':y,
'children':[],
'adjnodes':[]
}
我为自己是个傻瓜而道歉。我到处寻找这个问题的答案,所以如果答案很明显,那么我是在误用行话或其他东西;那样的话,请告诉我该用什么行话,我会抓起帽子上路的。不要挖苦人,只是在必要时更愿意被严厉地教导。谢谢。如果
n
有意义,您可以将这些dict
s中的每一个放入另一个dict
,并将n
作为键
如果n
没有意义,只需将那些dict
s添加到列表中即可
无论哪种方式,都要将数据保留在变量名之外 如果n
有意义,您可以将这些dict
s中的每一个放入另一个dict
,并将n
作为键
如果n
没有意义,只需将那些dict
s添加到列表中即可
无论哪种方式,都要将数据保留在变量名之外 听起来您试图将这些变量创建为一组单独的变量,然后将变量的名称存储在每个变量的地址
字段中
不要那样做。有关原因的解释,请参见和。但简短的说法是,尝试这样做是你首先遇到问题的唯一原因
为什么不创建一个包含所有节点的列表呢?然后,您的地址就可以作为该列表的索引。例如:
nodes = []
for n in range(1000):
nodes.append({
'address':n,
'resistance':x,
'special':[],
'parent':y,
'children':[],
'adjnodes':[]
})
或者,如果您计划在进行过程中添加和删除节点,因此列表索引不会保持一致,只需使用dict
:
nodes = {}
for n in range(1000):
nodes[n] = {
'address':n,
'resistance':x,
'special':[],
'parent':y,
'children':[],
'adjnodes':[]
}
听起来像是要将这些变量创建为一组单独的变量,然后将变量的名称存储在每个变量的地址
字段中
不要那样做。有关原因的解释,请参见和。但简短的说法是,尝试这样做是你首先遇到问题的唯一原因
为什么不创建一个包含所有节点的列表呢?然后,您的地址就可以作为该列表的索引。例如:
nodes = []
for n in range(1000):
nodes.append({
'address':n,
'resistance':x,
'special':[],
'parent':y,
'children':[],
'adjnodes':[]
})
或者,如果您计划在进行过程中添加和删除节点,因此列表索引不会保持一致,只需使用dict
:
nodes = {}
for n in range(1000):
nodes[n] = {
'address':n,
'resistance':x,
'special':[],
'parent':y,
'children':[],
'adjnodes':[]
}
除了个人轶事之外,我没有什么要补充的——我是这么做的。不是这个确切的问题,但当我们发现一个清除过程没有正确运行时,我不得不轮询约100台机器并提取一些文件大小信息。我使用我正在检查的文件的名称作为每个变量,为了使该方法有效,我必须进行的Monkeywring和hackjob编码是巨大的。我将不再维护这些代码——如果它需要认真的更新,我将从头开始重新编写它,知道我现在知道了什么。遵循回答者的建议:将数据排除在变量之外。这就是为什么PHP优于python:(开玩笑,请不要因为无俱乐部而对trolling投反对票:-)@vincent:Nah,Tcl优于两者eval
是做任何事情的唯一正确方法,因此您不必记住任何花哨、高效或安全的东西,因为不存在这样的东西。:)除了个人轶事之外,我没有什么要补充的——我是这么做的。不是这个确切的问题,但当我们发现一个清除过程没有正确运行时,我不得不轮询约100台机器并提取一些文件大小信息。我使用我正在检查的文件的名称作为每个变量,为了使该方法有效,我必须进行的Monkeywring和hackjob编码是巨大的。我将不再维护这些代码——如果它需要认真的更新,我将从头开始重新编写它,知道我现在知道了什么。遵循回答者的建议:将数据排除在变量之外。这就是为什么PHP优于python:(开玩笑,请不要因为无俱乐部而对trolling投反对票:-)@vincent:Nah,Tcl优于两者eval
是做任何事情的唯一正确方法,因此您不必记住任何花哨、高效或安全的东西,因为不存在这样的东西。:)本来想问这件事,但在别处发现了。想知道如何使用特定于节点的函数和类。这家伙有一个超级圆滑的答案shapes={'1':Square,'2':Circle,'3':Triangle}#只是dict x=shapes[raw_input()())中的类名,从dict获取类,然后调用它来创建一个shape实例。本打算询问这个问题,但在别处找到了它。想知道如何使用特定于节点的函数和类。这家伙有一个超级圆滑的答案shapes={'1':Square,'2':Circle,'3':Triangle}#只是dict x=shapes[raw_input()())中的类名,从dict获取类,然后调用它来创建一个shape实例。