我的任务是制作游戏,应该有多个模块以避免在一个脚本中混乱。我遇到了从其中一个模块导入变量的问题。到目前为止,我有一个设置,一个主设置。设置非常简单,并且:
class Settings():
def __init__(self):
self.screen_width = 1920
self.screen_height = 1080
self.bg_color = (230, 230, 230)
非常简单,但当我尝试引用这些变量时,它会为“设置”类提供“未解析的属性引用'screen_width'
主要是这样:
import sys, pygame
from game_settings import Settings
def run_game():
#Initialize the game and create the window
pygame.init()
screen = pygame.display.set_mode((Settings.screen_width,Settings.screen_height), pygame.FULLSCREEN)
pygame.display.set_caption("Alien Invasion")
while True:
#Listening for events
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill(Settings.bg_color)
pygame.display.flip()
run_game()
我想也许这可能是一个PyCharm问题,但发现它在IDLE中做同样的事情,那么导入变量的正确方法是什么?
感谢您花时间阅读本文!
答案 0 :(得分:2)
您需要创建Settings
类的实例,因为您在__init__
方法中设置的属性是实例属性。
尝试这样的事情:
def run_game():
my_settings = Settings() # create Settings instance
pygame.init()
screen = pygame.display.set_mode((my_settings.screen_width, # lookup attributes on it
my_settings.screen_height),
pygame.FULLSCREEN)
# ...
答案 1 :(得分:0)
您需要创建Settings对象的实例:s = Settings()
用法:s.bg_color
等。
OR
更改您的“设置”类,并且可以静态访问属性:
class Settings():
screen_width = 1920
screen_height = 1080
bg_color = (230, 230, 230)
答案 2 :(得分:0)
两个文件必须位于同一文件夹中,您必须创建Settings
类的实例。然后,您可以访问实例的属性。
main.py:
from game_settings import Settings
s = Settings()
print(s.bg_color)
game_settings.py:
class Settings():
def __init__(self):
self.screen_width = 1920
self.screen_height = 1080
self.bg_color = (230, 230, 230)
当您运行main.py
时,输出将为:
(230, 230, 230)