python自增_python – 类实例的自动递增ID

在尝试为图表的边(Edge类)实现自动递增ID时遇到了问题。当折叠节点到超图时,需要为每条边创建唯一ID。在初始化Edge类时,设置_id为0并递增,但遇到了UnboundLocalError。根据建议修改代码后,虽然解决了实例化错误,但_id并未按预期递增,导致新建边对象时ID始终为0。
摘要由CSDN通过智能技术生成

免责声明:这是我目前正在进行的一个学期项目.我的问题是关于实施级别的细节,而不是评分方案的一部分.我只是编写这段代码,以此来测试我将为我将要撰写的论文提出的理论.

此外,我已经考虑了this question的答案,运气不佳,所以请不要将此视为该问题的副本

问题:

我有一个图表(G =(V,E)).在我的算法中的某些时刻,我需要通过将多个节点(例如,v_1,v_2,…,v_n)“折叠”到一个节点(例如,v)中将其转换为超图(在某种意义上).在问题的上下文中,这意味着我需要改变E中的边缘,使得v_1,v_2,v_n中的任何一个与V中的任何其他节点u之间的任何边缘e将被改变,使得e现在在u和v之间. .

为了捕获任何节点对之间现在可能存在多个不同的边,我需要为每个边创建一个唯一的标识符.我试图通过ID和ID来做到这一点,我目前无法正确实现.

这就是我尝试过的:

class Edge:

_ID = 0

def __init__(self, u, v, w, c,f=0):

self.id = Edge._ID

Edge._ID += 1

self.src = u

self.dest = v

self.weight = w

self.capacity = c

self.flow = f

但是,当我尝试实例化一个新的边缘时,我收到以下错误:

>>> e = Edge(1,3,5,10,0)

Traceback (most recent call last):

File "", line 1, in

File "UnsplittableFlow.py", line 14, in __init__

self.id = Edge._ID;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值