【问题标题】:Calling function using string and module name [duplicate]使用字符串和模块名称调用函数[重复]
【发布时间】:2013-01-27 13:06:12
【问题描述】:

可能重复:
How to dynamically load a Python class

我目前正在使用“while”循环来自动更新存储在数据库中的游戏。 'while' 循环迭代直到达到游戏数。每次迭代都会返回包含所有游戏数据(版本、更新链接等)的行。

现在我在一个名为“Scripts”的子目录中为每个游戏创建了脚本。像这样

MainScript.py
  --> Scripts
       --> Game1.py
       --> Game2.py
       --> Game3.py

现在 MainScript 在连接数据库并获取游戏名称后,会一一调用所有游戏脚本。

但问题是存储在数据库中的游戏名称是一个字符串,Game1.py、Game2.py、Game3.py中的每个函数都与游戏名称相同。

这意味着当我尝试调用游戏的函数时,可以说“我的世界”。它必须看起来像这样。

Scripts.Minecraft.Minecraft(version, size, download)

现在尝试动态执行此操作是我的问题。因为它在一个while循环中,所以每次迭代的名称部分都会改变。如何动态执行此操作?

Scripts.<GameName>.<GameName>(version, size, download)

它总是按字面意思接受变量并说它不能使用它。调用函数时如何使用变量?

【问题讨论】:

    标签: python string variables module packages


    【解决方案1】:

    尝试使用getattr。例如。假设游戏名称在 gamename 变量中:

    getattr(getattr(Scripts, gamename), gamename)(version, size, download)
    

    应该可以。

    【讨论】:

    • 这终于解决了问题。我之前达到了 getattr,但嵌套的 getattr 是我绊倒的地方。谢谢迈克尔! :D
    猜你喜欢
    • 2010-09-05
    • 2010-09-05
    • 2011-12-17
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多