'int' 对象没有引用 self.mx 的属性 'mouse_x'

'int' object has no attribute 'mouse_x' referring to self.mx

我有一个鼠标精灵,它在游戏循环的每次迭代中更新鼠标的 x 和 y 位置,但我不太确定下面的错误消息是什么:“'int' 对象没有属性'mouse_x',好像它指的是 'self' 作为一个 int 对象,而 'mouse_x' 是它的属性?

import pygame


class mouse_sprite(pygame.sprite.Sprite):


    def __init__(self, x, y, screen):
        self.screen = screen
        self.mouse_x = x
        self.mouse_y = y

        self.update_rect(self.mx, self.my)

    def update_rect(self):
        self.rect = pygame.Rect(self.mouse_x, self.mouse_y, 1, 1)

    def update(self, x=None, y=None, screen=None):
        **#ERROR: 'int' object has no attribute 'mouse_x' Line 24: self.mouse_x = x**
        if x is not None:
            self.mouse_x = x

        if my is not None:
            self.mouse_y = y

        if screen is not None:
            self.screen = screen

        self.update_rect()

mouse = mouse_sprite
mx, my = pygame.mouse.get_pos()
mouse.update(mx, my)

您不是在创建新对象。您只是像调用静态方法

一样调用 class 方法

而不是

mouse = mouse_sprite

object = mouse_sprite(...)  # Pass init parameters
object.update(...)          # Pass method parameters

当您在创建的对象上调用方法时,第一个参数作为 self 传递。在你的例子中,你没有创建一个新对象,所以第一个参数 mx 被分配给 self 类型的 int。而且它没有字段 mouse_x.