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回圈中。
uj5u.com熱心網友回復:
as關鍵字很重要,因為 import 陳述句回傳一個型別為 的物件<class 'module'>。您將main()通過物件呼叫該函式module。
import v1.bot.main as v1
import v2.bot.main as v2
for i in ["v1", "v2"]:
eval(f"{i}.main()")
uj5u.com熱心網友回復:
最簡單的方法是將 bot 的所有版本實體添加到字典中,例如:
global_bot_list = {1 : v1.bot(), 2: v2.bot()}
然后像這樣做一個for回圈:
for bot in global_bot_list.items():
bot.main()
如果您想使代碼完成作業,您可能應該為所有機器人創建一個抽象基類,以從該類繼承該main方法并將簽名更改global_bot_list為:global_bot_list: Dict[int, BotBase]使用BotBase您選擇呼叫新基類的任何名稱。
順便說一句,為了讓它作業,您需要為__init__每個機器人類添加一個方法,并且main需要是一個實體方法,self并將其作為第一個引數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/433017.html
