使用字符串和模块名称调用函数

时间:2013-01-27 13:06:12

标签: python string variables module packages

  

可能重复:
  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)

它总是从字面上看变量,并说它不能使用它。调用函数时如何使用变量?

1 个答案:

答案 0 :(得分:3)

尝试使用getattr。例如。鉴于游戏名称位于gamename变量:

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

应该有用。