鱼C论坛

 找回密码
 立即注册
查看: 1539|回复: 3

[已解决]求助关于批量赋值,快吐了

[复制链接]
发表于 2021-1-8 21:46:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 qscde1 于 2021-1-8 21:56 编辑

需求是利用win32com调用DLL来实例化出一批对象,如下

from win32com import client

test1 = client.Dispatch("abc.def")
test2 = client.Dispatch("abc.def")
test3 = client.Dispatch("abc.def")
...
test99 = client.Dispatch("abc.def")

后续用test1.xxx.xxx()来调用DLL里面的API,后面会有1个线程对应1个对象的操作。

尝试过用for循环加
exec(test{}=client.Dispatch("abc.def").format,(x))
这样的方法虽然不会报错,但是在下一行调用的时候返回的是空值,想请问除了exec还有没有其他比较合适的方式可以造出来多个COMObject对象来让后续调用更方便一点呢,跪求!



最佳答案
2021-1-8 21:57:04
为什么要用一堆变量名来储存呢?放进列表它不香么?
from win32com import client

objs = [client.Dispatch("abc.def") for _ in range(100)]

至于返回空值不一定储存方式的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-8 21:57:04 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
为什么要用一堆变量名来储存呢?放进列表它不香么?
from win32com import client

objs = [client.Dispatch("abc.def") for _ in range(100)]

至于返回空值不一定储存方式的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-9 16:56:35 | 显示全部楼层
hrp 发表于 2021-1-8 21:57
为什么要用一堆变量名来储存呢?放进列表它不香么?

放进列表的话,之后如何以列表中每个元素创建单独的线程然后传给线程内的方法调用呢?
用threading.Thread()的args=objs[0]这样子吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-9 17:19:08 | 显示全部楼层
qscde1 发表于 2021-1-9 16:56
放进列表的话,之后如何以列表中每个元素创建单独的线程然后传给线程内的方法调用呢?
用threading.Thre ...

好的暂时解决了……
def start():
    pass

for i in range(99):
        a = (objs[i])
        objs[i] = threading.Thread(target=start,args=(a,))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 20:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表