Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 实例化的动态命名_Python_Oop_Instantiation_Factory - Fatal编程技术网

Python 实例化的动态命名

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,

这是一个概念性问题,我需要为网络模拟实例化一些“节点”。命名是个问题-我需要一个方法来自动生成实例的名称(任何允许我在创建后跟踪和引用节点的方法都可以)

为了更好地了解我需要什么,下面是大多数循环在问题所在位置嵌入hashtags后的样子。x和y将在父函数中定义

    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实例。