Python中将字典作为类来使用

在Python中,当需要集合属性但又不想创建类时,可以利用字典和深拷贝实现类似C/C++结构的功能。创建了一个Task字典模板,通过深拷贝生成实例,并赋值相关属性,以此实现类的功能,避免函数参数过多的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有些时候我们也许需要将一些相关的属性集中存储而又不想去创建一个类(可能因为太麻烦或代码的历史原因,确切的说这个时候我们需要的是一个C/C++中的结构),这个时候我们可以用Python的字典(dictionary)和深拷贝(deepcopy)结合使用来解决这个问题,以下是我遇到的问题:在我修改一个用Python实现类似Linux的crontab的小应用里,需要把一个任务的信息传给一个处理函数中,每个任务有十几个属性,而我有不希望在我函数的列表中有十几个参数,怎么办呢?

我声明了一个字典模板:
Task = {
    "min"       : "",
    "hou"       : "",
    "day"       : "",
    "mon"       : "",
    "week"      : "",
    "table"     : "",
    "filename" : "",
    "filetype" : "",
    "script"    : "",
    "rsyncfile" : "",
    "interflag" : -1,
    "interval" : -1,
    "modtime"   : -1,
    "doing"     : -1,
    "url"       : ""
}

在我需要一个实例的时候我用如下的代码来创建:
t = copy.deepcopy(Task)
t["min"] = lineArr[0]
t["hou"] = lineArr[1]
t["day"] = lineArr[2]
t["mon"] = lineArr[3]
t["week"] = lineArr[4]
t["table"] = lineArr[5]
t["filename"] = lineArr[6]
t["filetype"] = lineArr[7]
t["script"] = lineArr[8]
t["rsyncfile"] = lineArr[9]
t["url"] = lineArr[10]
由于Python的赋值是引用赋值(浅拷贝),所以我需要在内存中为新对象开辟一块内存,这样就需要一个模板对它进行深拷贝来得到一个新的对象。其中copy是一个模块deepcopy为copy模块下的一个方法。

至此我没有创建任何类而得到了类似类的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值