使用字符串从不同的模块获取列表?

时间:2016-04-12 22:45:07

标签: python eclipse

我正在尝试从列表中随机获取字符串,然后使用从其中输出的字符串来查找与来自不同模块的字符串相同名称的列表,以确定战斗实例中的敌人统计信息

例如,我有1级敌人列表,可能是:

Lv1MonsterList = ["goblinlv1", "banditLv1", "elementalLv1"]

我有一个变量集可以从该列表中随机选择一个:

trueMonster = random.choice(Lv1MonsterList)

然后在另一个模块(globalvarDB)中,我为第一个列表中的每个字符串列出了敌人的统计信息。例如:

goblinLv1 = [1,2,3,4,5]
banditLv1 = [1,2,3,4,5]
elementalLv1 = [1,2,3,4,5]

所以我想使用trueMonster的值从另一个模块中的相应表中获取所有信息。这可能吗?

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。您需要非常简单地组织文件结构。

让我们为您的敌人名单命名'档案enemylist.py。然后,您希望将enemylist.py放在与globalvarDB相同的目录中:

..
--> enemylist.py
--> globalvarDB.py

有了这个,您现在可以在enemylist.py中执行以下操作:

from globalvarDB import goblinLv1, banditLv1, elementalLv1

Lv1MonsterList = [goblinlv1, banditLv1, elementalLv1]
trueMonster = random.choice(Lv1MonsterList) 

例如,现在goblinlv1会在您调用时解析为[1,2,3,4,5]。如果trueMonster现在设置为goblinlv1,那么它也将解析为[1,2,3,4,5]

请注意,您不再在此处理字符串,而是直接引用您想要的列表(这是一种很好的做法,因为它避免了一层混淆)

基本技术完全相同 - 简单的import语句将解决所有问题 - 但是还有其他方法来组织文件结构,例如

  • globalvarDB放置在PYTHONPATH上,以便Python可以在您系统的任何位置访问它。

  • 将它放在自己的文件夹中(比如utils),在根目录中声明了一个空白的__init__.py文件,所以你有类似的东西

    ..
    --> enemylist.py
    --> utils
        --> globalvarDB.py
        --> __init__.py
    

    在这种情况下,您希望from utils.globalvar import ...代替enemylist.py