注册 登录
编程论坛 Python论坛

求助帖。。。Python武装飞船里,setting类报错AttributeError: 'Settings' object has no attribute '

fzqqn 发布于 2019-09-11 21:15, 11224 次点击
使用程序调用类的时候,就会出现报错,但是在类自己的程序测试却是OK 的。但
只有本站会员才能查看附件,请 登录
from..improt..的语法没有发现错误,这边研究很长时间了,没有解决,求高手看看,万分感谢!!!,补充一下,两个文件都是再同一个目录下的,谢谢!
只有本站会员才能查看附件,请 登录

附件是代码以及报错图片,万分感谢!!!!
13 回复
#2
fall_bernana2019-09-12 16:16
回复 楼主 fzqqn
报错信息都说了错误在 settings.py 下的
print(cs.screen_width) 这行
AttributeError: type object 'Settings' has no attribute 'screen_width' 错误类型是Settings这个object没有screen_width参数.
你应该 写成 cs=Settings() 这样才能正确实例这个class.才能使用他的screen_width
而且在alie_invasion.py里不有正确的使用方式吗,你自己都不看的.

[此贴子已经被作者于2019-9-12 16:22编辑过]

#3
fzqqn2019-09-16 20:27

这个还是帮忙将代码下下来看一下,万分感谢,之前输入print是为了在Settings()测试类有没有写错,而在alie_invasion.py里面调用类的时候出错,这边将Settings()里面的print()删除还是不能调用类。
#4
fzqqn2019-09-16 20:31
从新发图片

[此贴子已经被作者于2019-9-16 21:04编辑过]

#5
fzqqn2019-09-16 20:34
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2019-9-16 21:11编辑过]

#6
fall_bernana2019-09-17 10:17
回复 5楼 fzqqn
程序代码:

class Settings():
    def __init__(self):
        self.screen_width = 1200
        self.screen_height = 800
        self.bg_color = (230,230,230)

程序代码:

import sys
import pygame
from settings import Settings
def run_game():
    #初始化一个游戏并且创建一个屏幕
    pygame.init()
    ai_settings=Settings()
    print(ai_settings.screen_height)
    screen=pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
    pygame.display.set_caption("Alien Invasion")
    #开始游戏的主循环
    while True:
         #监视键盘鼠标
        for event in pygame.event.get():
            if event.type==pygame.QUIT:
                sys.exit()
        #每次循环时都从新绘制屏幕
        screen.fill(ai_settings.bg_color)
        #让最近的屏幕绘制可见
        pygame.display.flip()
run_game()

我这里是可以运行的.你自己对比下吧
#7
fzqqn2019-09-18 21:00
我这边重新输入一遍又可以运行了,也不知道为什么,谢谢!高手
#8
python1102020-02-22 08:30
遇到同样问题,有人知道什么原因吗
#9
时光流逝2020-02-23 17:38
回复 5楼 fzqqn
楼主,你代码里的Settings写成了Steeings

#每次循环时都重新绘制屏幕
screen.fill(ai_settings.bg_color)
#10
jxr03452020-03-04 13:46
我曾经输这个程序错误到想放弃。最后是因为格式(缩进)不对造成的!
#11
cyjcyj2020-04-04 12:46
我知道了,我是linux系统,init不会自动提示,左边和右边都是两个下划线而不是一个
#12
lj18289861562020-08-20 18:23
这个原因就是def __init__,前后都是2个下划线,而你只打了1个
#13
lw10297584012020-09-19 19:49
回复 7楼 fzqqn
我也是的运行一遍本来又报错,输入高手的代码后就行了,我实在不知道为什么!
#14
Famous_Zhu2022-05-12 11:40
我是因为__int__错误造成的,应该是__init__
1