python - 在python中以两种方式在两个文件之间传递变量
问题描述
好的,所以我知道这可能看起来很愚蠢,但我目前正在使用多个文件制作游戏,其中一个主要文件从其他文件接收所有变量并以某种方式使用它们。我正在使用:
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 *)往往会使程序更难阅读。与其使用一堆全局变量,不如考虑一个具有您需要的值作为字段的全局变量。而不是 import *,考虑显式导入(只是import sprites
,然后sprites.foo
)。
主要.py:
from sprites import *
from config import *
print "Hello from main. main_value is: ", main_value
print "sprite value is: ", sprite_value
do_sprite()
精灵.py:
from config import *
sprite_value=10
def do_sprite():
print "main value is: ", main_value
配置文件:
main_value=5
推荐阅读
- math - 将方向向量投影到矩形的边缘
- javascript - 游戏没有迭代,不知道为什么
- python - 区分子进程中的stdout和stderr
- php - 我在打印存储在字符串变量中的 url 时在 php 中得到一个奇怪的输出
- python-3.x - 如何为不确定数量的选项的线图创建 Bokeh Select 菜单?
- java - (JAVA) Need to convert DATE to prepared statement for SQL
- google-chrome - 当图像的实际尺寸为 300x250 时,Chrome 检查器显示图像的固有尺寸为 1x1
- reactjs - 如何在组件重新渲染之前获取 Redux 状态?
- nginx - nginx 和 uwsgi 配置问题
- css - 为什么我的顶部标题位于导航菜单的顶部?