【问题标题】:pass argument when opening another python file as a module?将另一个python文件作为模块打开时传递参数?
【发布时间】:2018-09-01 11:59:44
【问题描述】:

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

我完全不知道该怎么做,所以这是我导入和调用 python 游戏文件的方法:

import SpaceInvaders
SpaceInvaders.SpaceInvaders().mainLoop()

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

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

【问题讨论】:

    标签: python variables pygame arguments parameter-passing


    【解决方案1】:

    如果你想将sounddifficulty 传递给SpaceInvadersmainLoop,那么让mainLoop 将它们作为参数,然后你就可以发送它们:

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

    回答附加问题“这就是问题所在,我不希望它们在主循环中,我希望它们在 SpaceInvaders 类中:(” - 这样做:

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

    【讨论】:

    • 这就是问题所在,我不希望它们在主循环中,我希望它们在 SpaceInvaders 类中:(
    • @AntsOfTheSky 我将其添加到答案中
    【解决方案2】:

    示例用法:

    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)
    

    如果您想获得真正精美的结帐:

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-02
    • 1970-01-01
    • 2014-03-23
    • 2021-06-17
    • 2013-11-19
    • 2011-03-16
    • 2016-03-01
    • 1970-01-01
    相关资源
    最近更新 更多