Python 传递环境变量

Python 传递环境变量,python,networkx,Python,Networkx,如何使用Relabel_节点函数中的映射在switch类中传递环境变量(env) 实际上我试过: H = nx.relabel_nodes(G, mapping=switch(env) ,copy=True 但它不起作用,给了我错误。 传递env变量是模拟开始的关键 **class switch(object): def __init__(self, id): self.id = id self.env = env self.store

如何使用
Relabel_节点
函数中的映射在switch类中传递环境变量(env)

实际上我试过:

H = nx.relabel_nodes(G, mapping=switch(env) ,copy=True
但它不起作用,给了我错误。 传递env变量是模拟开始的关键

**class switch(object):
    def __init__(self, id):
        self.id = id
        self.env = env
        self.store = simpy.Store(env)
        self.rate = 100
        self.out = None
        self.packets_rec = 0
        self.packets_drop = 0
        self.qlimit = None
        self.byte_size = 0  # Current size of the queue in bytes
        self.debug = False
        self.interfaces = []
        self.numinterfaces = 16
        self.busy = 0
        for i in range(self.numinterfaces):
            self.interfaces.append(SwitchPort(env, self.rate))

    def __repr__(self):
        return self.id

def edges_():
    """ Return the lanl internet view graph from lanl.edges
    """

    try:
        fh = open('edges.list', 'r')
    except IOError:
        print("File not found")
        raise

    G = nx.Graph()

    for line in fh.readlines():
        (node1, node2) = line.split()
        G.add_edge(str(node1), str(node2))

    # get largest component and assign ping times to G0time dictionary

    return G

if __name__ == '__main__':
    import networkx as nx

    env = simpy.Environment()
    G = edges_()
    H = nx.relabel_nodes(G, mapping=switch ,copy=True)
    print("The graph has %d nodes with %d edges" \
          % (nx.number_of_nodes(H), nx.number_of_edges(H)))**

根据开关类代码,传递给开关对象的参数应该是id,而不是env,因此修改开关类以接受两个变量id和env,如下所示:

class switch(object):
    def __init__(self, id, env):
        self.id = id
        self.env = env
然后,创建开关对象的调用将是:

 H = nx.relabel_nodes(G, mapping=switch(id, env) ,copy=True)

尝试了AttributeError:交换机实例没有调用方法读取。您正在传递一个
开关
对象(或者在示例的末尾,传递
开关
类本身),但是您需要传递一个
dict