Python AttributeError:';模块';没有属性';当前动画';
我在Python AttributeError:';模块';没有属性';当前动画';,python,class,attributeerror,Python,Class,Attributeerror,我在main.py中有一些代码: import pygame, char def move(char): #movement code #friction if char.xaccel == 0: if abs(char.xvel) < char.xvelfalloff: char.xvel = 0 elif abs(char.xvel) == char.xvel: char.xvel -= char.xvelfalloff
main.py中有一些代码:
import pygame, char
def move(char):
#movement code
#friction
if char.xaccel == 0:
if abs(char.xvel) < char.xvelfalloff: char.xvel = 0
elif abs(char.xvel) == char.xvel: char.xvel -= char.xvelfalloff
elif abs(char.xvel) != char.xvel: char.xvel += char.xvelfalloff
#acceleration
char.xvel += char.xaccel
#max speed
if abs(char.xvel) > char.xmaxvel: char.xvel = math.copysign(char.xmaxvel,char.xvel)
#position/collision detection
char.x += char.xvel
char.xaccel = 0
char.yaccel = char.ygravity
char.yvel += char.yaccel
char.y += char.yvel
if char.y < 0: #TODO: more collision detection
char.yvel = 0
char.y = 0
char.onground = True
if char.jumping:
char.yvel = char.jumpstrength
char.jumping = False
char.onground = False
#no more movement code
charObj = char.Char()
charObj = move(charObj)
screen.blit(char.currentanimation, pygame.Rect(char.x, (screen_height-char.y)-char.height, char.width, char.height))
pygame.display.flip()
注意,我已经删掉了这里所有不相关的内容。
因此,当我运行以下代码时,我得到一个错误:
Traceback (most recent call last):
File "C:\Users\spng453\scripts\super smash feminist\main.py", line 90, in <module>
screen.blit(char.currentanimation, pygame.Rect(char_x, (screen_height-char_y)-char_height, char_width, char_height))
AttributeError: 'module' object has no attribute 'currentanimation'
回溯(最近一次呼叫最后一次):
文件“C:\Users\spng453\scripts\super\main.py”,第90行,在
blit(char.currentanimation,pygame.Rect(char_x,(screen_height-char_y)-char_height,char_width,char_height))
AttributeError:“模块”对象没有属性“currentanimation”
我真的不知道我在这里哪里会出错。
如果您能帮助您理解此问题的起因,我们将不胜感激。如果您将类定义为具有属性(即,self.currentanimation
),您可以这样访问它:
charObj = char.Char()
charObj.currentanimation
您在代码中所做的是查看模块char
,而不是char的实例(charObj
)。char
模块没有名为currentanimation
的属性/变量/etc。但是Char
do的实例——或者说,一旦您在类定义中定义了\uuu init\uuu()方法,并开始使用:-),它们就会出现
有关设置和访问属性的更多信息,请查看。哇,我很惊讶我竟然让它通过了。谢谢所以如果我做对了,我必须让所有这些变量引用,例如,self.currentanimation
,而不是currentanimation
?另外,很抱歉,它不允许我编辑我的上一篇文章。不过,我还有另一个问题,一旦我将所有变量声明都引用到self.
…,我就会出现以下错误:AttributeError:'NoneType'对象没有属性“currentanimation”
。我发誓,我会把这些东西编辑成一条评论,但是系统不会让我编辑它,即使它说我4分钟前才发布了最后一条评论。@CrazyM4n是的,你需要定义一个\uuu init\uu
方法。当前,Char
没有构造函数,因此它不返回任何内容。不过,我添加了它,并将所有变量声明都放在了其中(在您提出之前我就这样做了)。还是一样的错误。完整的代码在这里:以防万一你想看。如果答案是正确的,你介意将问题标记为已解决吗?我做了,谢谢你提醒我。
charObj = char.Char()
charObj.currentanimation