For循环遍历class
For loop through class
import v1.bot.main
import v2.bot.main
for i in ['v1', 'v2]:
# I want the for loop to do something like i.bot.main()
# Like
# v1.bot.main()
# v2.bot.main()
这样可以吗?想去掉vX的写法,想放到for循环中。
最简单的方法是将 bot 的所有版本实例添加到字典中,例如:
global_bot_list = {1 : v1.bot(), 2: v2.bot()}
然后像这样做一个for循环:
for bot in global_bot_list.items():
bot.main()
如果你想让代码完成工作,你可能应该为你的所有机器人创建一个抽象基础 class 以继承它具有 main
方法并更改 [=13= 的签名] 至:global_bot_list: Dict[int, BotBase]
其中 BotBase
是您选择的新基地名称 class.
顺便说一句,为了让它工作,你需要向每个机器人添加一个 __init__
方法 class 并且 main
需要是一个具有 self
作为它的第一个参数。
as
关键字很重要,因为 import 语句 returns 是 <class 'module'>
类型的对象。您将通过 module
对象调用 main()
函数。
import v1.bot.main as v1
import v2.bot.main as v2
for i in ["v1", "v2"]:
eval(f"{i}.main()")
import v1.bot.main
import v2.bot.main
for i in ['v1', 'v2]:
# I want the for loop to do something like i.bot.main()
# Like
# v1.bot.main()
# v2.bot.main()
这样可以吗?想去掉vX的写法,想放到for循环中。
最简单的方法是将 bot 的所有版本实例添加到字典中,例如:
global_bot_list = {1 : v1.bot(), 2: v2.bot()}
然后像这样做一个for循环:
for bot in global_bot_list.items():
bot.main()
如果你想让代码完成工作,你可能应该为你的所有机器人创建一个抽象基础 class 以继承它具有 main
方法并更改 [=13= 的签名] 至:global_bot_list: Dict[int, BotBase]
其中 BotBase
是您选择的新基地名称 class.
顺便说一句,为了让它工作,你需要向每个机器人添加一个 __init__
方法 class 并且 main
需要是一个具有 self
作为它的第一个参数。
as
关键字很重要,因为 import 语句 returns 是 <class 'module'>
类型的对象。您将通过 module
对象调用 main()
函数。
import v1.bot.main as v1
import v2.bot.main as v2
for i in ["v1", "v2"]:
eval(f"{i}.main()")