Python AttributeError:“module”没有属性“currentanimation”

2024-09-30 04:38:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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()

以及char.py中的一些代码:

^{pr2}$

请注意,我在这里删掉了所有不相关的内容。 所以,当我运行这段代码时,我得到了一个错误:

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'

我真的不知道我哪里会出错。 如果能帮助我们理解这个问题的根源,我们将不胜感激。在


Tags: 代码pyifmainabsscreenpygameheight
1条回答
网友
1楼 · 发布于 2024-09-30 04:38:11

如果将类定义为具有属性(即self.currentanimation),则可以按如下方式访问它:

charObj = char.Char()
charObj.currentanimation

您在代码中所做的是查看模块char,而不是Char(charObj)的内部。char模块没有名为currentanimation的属性/变量/etc。但是Char的实例会这样做——或者,更确切地说,一旦您在类定义中定义了一个__init__()方法,并开始使用^{}:-)

有关设置和访问属性的更多信息,请看this section of the docs。在

相关问题 更多 >

    热门问题