передать аргумент при открытии другого файла Python в качестве модуля? - PullRequest
0 голосов
/ 01 сентября 2018

Я переделываю игру на python, и файл меню и файл игры разделены. Меню импортирует файл игры как модуль и вызывает его по запросу. Однако я хочу, чтобы переменные, определяющие звук и сложность, передавались из файла меню в файл игры, так как эти опции выбираются пользователем в меню.

Я вообще не уверен, как это сделать, поэтому вот как я импортирую и вызываю файл игры python:

import SpaceInvaders
SpaceInvaders.SpaceInvaders().mainLoop()

и я хочу передать аргументы 'звук' и 'сложность' , значения которых являются строками.

также я вызываю функцию основного цикла, но переменные должны быть пригодными для использования в классе SpaceInvaders, чтобы я мог назначить их self.sound и self.difficulty , они не являются ' т используется в основном цикле.

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Если вы хотите передать sound и difficulty в mainLoop из SpaceInvaders, сделайте так, чтобы mainLoop принял их в качестве аргументов, и тогда вы сможете отправить их:

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

Чтобы ответить на дополнительный вопрос "Это проблема, я не хочу, чтобы они были в основном цикле, я хочу, чтобы они были в классе SpaceInvaders :(" - сделайте это:

SpaceInvaders.SpaceInvaders(sound, difficulty).mainLoop()
0 голосов
/ 01 сентября 2018

пример использования:

python somegame.py hello args --difficulty medium

как использовать sys.argv создать пример:

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

выход: * +1010 *

['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)

, если вы хотите получить действительно модный заказ:

...