Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当我试图运行Python速成课程中的代码时,pygame出现了这个错误(出现了异常:AttributeError)_Python_Pygame - Fatal编程技术网

当我试图运行Python速成课程中的代码时,pygame出现了这个错误(出现了异常:AttributeError)

当我试图运行Python速成课程中的代码时,pygame出现了这个错误(出现了异常:AttributeError),python,pygame,Python,Pygame,我正试图从《Python速成课程》一书中做一个项目。我完全按照书中的代码片段制作了所有内容,但我经常遇到以下错误: 发生异常:AttributeError“Settings”对象没有 属性“screenWidth”文件“D:\Visual Studio代码项目\数独 游戏\window.py“,第12行,在run\u游戏中 (igSettings.screenWidth,igSettings.screenHeight))文件“D:\Visual Studio代码项目\Sudoku game\wi

我正试图从《Python速成课程》一书中做一个项目。我完全按照书中的代码片段制作了所有内容,但我经常遇到以下错误:

发生异常:AttributeError“Settings”对象没有 属性“screenWidth”文件“D:\Visual Studio代码项目\数独 游戏\window.py“,第12行,在run\u游戏中 (igSettings.screenWidth,igSettings.screenHeight))文件“D:\Visual Studio代码项目\Sudoku game\window.py”,第28行,在 运行游戏()

这是我的数独文件的代码:

import sys
import pygame

from settings import Settings

def run_game():
    pygame.init()

    igSettings = Settings()

    screen = pygame.display.set_mode(
        (igSettings.screenWidth, igSettings.screenHeight))
    pygame.display.set_caption("Sudoku")

    while True:

        screen.fill(igSettings.bgColor) 

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit(0) 



        pygame.display.flip()


run_game()
这是我的设置文件中的代码:

class Settings():

    def set(self):

        self.screenWidth = 1200
        self.screenHeight = 800   
        self.bgColor = (0.235,0)

我无法在线找到解决方案

您需要在对象上调用
igSettings
来设置对象的属性

igSettings = Settings()
igSettings.set()
或者简单地让它们成为类属性,现在就可以直接访问它们

class Settings:
    screenWidth = 1200
    screenHeight = 800
    bgColor = (0.235,0)

现在您甚至不需要调用
set
。您可以查看有关python如何工作的更多信息。

在类
设置中创建构造函数(
\uuuu init\uuuu
)而不是方法

class设置():
定义初始化(自):
self.screenWidth=1200
self.screenHeight=800
self.bgColor=(0235,0)
注意,您不能选择构造函数的名称。名称必须完全是
\uuuu init\uuuu
。请参阅。
构造类的实例时,将自动调用构造函数:

igSettings=Settings()

此外,当声明属性``时(
->
)还有一个输入错误:

self.bgColor=(0.235,0)

self.bgColor=(0235,0)

igSettings=Settings();igSettings.set()
在调用
set()
函数后,将设置属性。请将堆栈跟踪放在代码引号中,并按原样复制堆栈跟踪。帮助我们阅读。谢谢@Ch3steR,在网上找不到答案,在书中,项目章节或功能章节没有提到这一点。我怎么能认为你的答案有效呢?很高兴能帮上忙。发布了一个包含更多细节的答案。;)