正在将main.py变量初始化到另一个文件中

2024-10-03 19:33:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个模块:

主要内容:

variable1, variable2 = 800, 800

其他:

import main
variable1, variable2 = main.variable1, main.variable2

我尝试使用import main访问mains变量,但是这将重新初始化整个main类。那与我想要的正好相反。我只想将变量1和变量2中的一个值放入另一个文件中,而不进行初始化。我能做什么

当我发表评论时:

#from main import DISPLAY_W, DISPLAY_H

例如,它将运行映射。RPG Map

当我取消注释时,我得到以下信息:

Traceback (most recent call last):
  File "D:/Downloads/Programming/Python/Programs/Learning Basics/Program 7.12 - 2D pygame, Snow/main.py", line 7, in <module>
    import Weather
  File "D:\Downloads\Programming\Python\Programs\Learning Basics\Program 7.12 - 2D pygame, Snow\Weather.py", line 2, in <module>
    from main import DISPLAY_W, DISPLAY_H
  File "D:\Downloads\Programming\Python\Programs\Learning Basics\Program 7.12 - 2D pygame, Snow\main.py", line 143, in <module>
    Weather.initialize_weather()
AttributeError: module 'Weather' has no attribute 'initialize_weather'

这意味着我没有提供属性,但是请注意,我使用dir(Weather)来查找我的问题:

['DISPLAY_H', 'DISPLAY_W', 'MAX_RAIN', 'MAX_SNOW', 'RAIN_SIZE', 'Rain', 'Random', 'SNOW_SIZE', 'SPEED', 'Snow', 'SystemRandom', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'initialize_rain', 'initialize_snow', 'initialize_weather', 'lognormvariate', 'normalvariate', 'paretovariate', 'pygame', 'rainfall', 'randint', 'random', 'randrange', 'sample', 'screen', 'seed', 'setstate', 'shuffle', 'snowfall', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']

然后再次使用未注释的main:

['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'pygame']

它抹杀了我的价值观

天气

import pygame
from main import DISPLAY_W, DISPLAY_H
from random import *

DISPLAY_W, DISPLAY_H = 800, 800
screen = pygame.display.set_mode((DISPLAY_W, DISPLAY_H))

大体上:

import pygame
import glob
from random import *
from pygame import mixer
import TileSheet
import Button
import Weather

# Load Window
pygame.init()
# 800x800 pixels
DISPLAY_W, DISPLAY_H = 800, 800
canvas = pygame.Surface((DISPLAY_W, DISPLAY_H))
screen = pygame.display.set_mode((DISPLAY_W, DISPLAY_H))
pygame.display.set_caption('Test Tileset')
running = True

Tags: fromimportmaindownloadsdisplaypygamefileprogramming
1条回答
网友
1楼 · 发布于 2024-10-03 19:33:17

您可以在main.py文件中添加if __name__ == "__main__":

例如:

if __name__ == "__main__":
    print('Hello')

在上面的示例中,仅当您直接从该模块运行main.py时,程序才会打印Hello,而当您在其他模块中导入main.py时,程序不会打印任何内容

Read this for more details.

相关问题 更多 >