好吧,所以我知道这可能看起来很愚蠢,但我目前正在使用多个文件制作一款游戏,其中一个主要文件接收来自其他文件的所有变量并以某种方式使用它们。我正在使用:
from SPRITES import *
为了让这些变量结束,但是现在我需要一个只能在SPRITES中的MAIN中定义的变量(因为玩家所在的平台位于main中,这需要更改sprites中定义的控件),但是如果我只是做一个
from MAIN import *
这似乎完全中断了连接。请帮忙
编辑:好的,目前我的文件可能太大,无法在这里发布所有代码,但我会尝试在这里发布相关内容(第一次在这里)。这是主“titleMAIN”文件的开始
import pygame as pg
import random
from titleSETTING import *
from titleSPRITE import *
cont = ("green")
class Game:
def __init__(self):
# initialize game window, etc
pg.init()
等等 从 Game 类调用 SPRITES 文件中的 Player 类 - 我需要能够在 Player 类中使用“cont”变量:
def new(self):
# start a new game
cont = ("green")
...
self.player = Player(self)
self.all_sprites.add(self.player)
这是我尝试从 SPRITES 文件调用 MAIN 文件的地方:
from titleSETTING import *
...
class Player(pg.sprite.Sprite):
def __init__(self, game):
抱歉,我含糊其词,第一次来这里,无论我多么喜欢它,在编码方面还是个新手。顺便说一句,我所说的文件是指同一文件夹中的不同 python (.py) 文件 - 使用 IDLE 作为 IDE,这很糟糕,但这就是我得到的
编辑2:感谢您的回复 - 我意识到最好尝试将所有这些都制作为一个文件而不是两个文件,这样就不会使代码过于复杂,所以我现在就以这种心态工作
最佳答案
这对您不起作用的主要原因是循环导入存在问题。如果某个文件 A 导入了其他文件 B,那么您不希望 B 导入 A(即使是通过其他一些文件间接导入)。
因此,为了使其正常工作,我将 main 分为两部分。
顺便说一句,使用全局变量(和 import *)往往会使程序更难阅读。考虑一个具有您需要的字段值的全局变量,而不是一堆全局变量。考虑显式导入(只需导入 sprites
,然后sprites.foo
),而不是 import *。
主.py:
from sprites import *
from config import *
print "Hello from main. main_value is: ", main_value
print "sprite value is: ", sprite_value
do_sprite()
Sprite .py:
from config import *
sprite_value=10
def do_sprite():
print "main value is: ", main_value
配置.py:
main_value=5
关于python - 在Python中两个文件之间双向传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51812068/