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