通过参数时打开另一个python文件作为模块?

时间:2018-09-01 11:59:44

标签: python variables pygame arguments parameter-passing

我正在用python重新制作一个游戏,菜单文件和游戏文件是分开的。菜单将游戏文件导入为模块,并在需要时调用它。但是,我希望确定声音和难度的变量从菜单文件传递到游戏文件,因为这些选项是由用户在菜单中选择的。

我完全不确定如何执行此操作,因此这是我导入和调用python游戏文件的方式:

import SpaceInvaders
SpaceInvaders.SpaceInvaders().mainLoop()

,我想通过参数'sound''difficulty',它们的值是字符串。

我也调用了主循环函数,但是变量需要在SpaceInvaders类中可用,因此我可以将它们分配给 self.sound self.difficulty ,不在主循环中使用。

2 个答案:

答案 0 :(得分:1)

如果您想将sound的{​​{1}}和difficulty传递给mainLoop的{​​{1}},则使SpaceInvaders接受它们作为参数,然后您将能够发送给他们:

mainLoop

要回答其他问题“这就是问题,我不希望它们出现在主循环中,我希望它们在SpaceInvaders类中:(“ -执行此操作:

SpaceInvaders.SpaceInvaders().mainLoop(sound, difficulty)

答案 1 :(得分:0)

用法示例:

python somegame.py hello args --difficulty medium

如何使用sys.argv创建示例:

echo 'import sys;print(sys.argv)' >> test.py
python test.py okay okay --diff med

输出:

['1.py', 'okay', 'okay', '--diff', 'med']

使用sys.argv的非常基本的示例:

import sys
import SpaceInvaders

print(sys.argv)
# step through using pdb
# see: https://docs.python.org/3/library/pdb.html
import pdb;pdb.set_trace() #print(dir(), dir(SpaceInvaders))
# 'n' enter, 'n' enter
# set self.stuff

# create the class
invade = SpaceInvaders.SpaceInvaders(sys.argv)

# pass argv to mainLoop
invade.mainLoop(sys.argv)

SpaceInvaders.py中的

class SpaceInvaders(object):
    def __init__(self, args):
        print(args)
        self.difficulty = # some var from args
        import pdb;pdb.set_trace()

    def mainLoop(self, args):
        print(args)

如果您想真正结帐: