为何定义了image和Player类调用时报错

源代码:

import pygame

pygame.init()
screen = pygame.display.set_mode((500,600))

clock = pygame.time.Clock()

pygame.display.set_caption('飞机大战')

class Player(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = 'C:\\python\\venv\\飞机大战\\Python飞机大战\\player.ico'
        self.rect = self.image.get_rect()
        self.rect.center = (200,200)

all_sprites = pygame.sprite.Group()
player = Player()
all_sprites.add(player)

running = True
while running:
    for event in pygame.event.get():
        clock.tick(60)
        if event.type == pygame.QUIT:
            running = False
        screen.fill((255,255,255))
        all_sprites.draw(screen)
    pygame.display.update()

pygame.quit()

为什么定义了image和Player类却报错:

Traceback (most recent call last):
  File "C:\python\venv\飞机大战\飞机大战.py", line 18, in <module>
    player = Player()
             ^^^^^^^^
  File "C:\python\venv\飞机大战\飞机大战.py", line 14, in __init__
    self.rect = self.image.get_rect()
                ^^^^^^^^^^^^^^^^^^^
AttributeError: 'str' object has no attribute 'get_rect'

求解答

self.image = pygame.image.load(r'C:\python\venv\飞机大战\Python飞机大战\player.ico')
self.rect = self.image.get_rect()

字符串对象没有get_rect方法
self.image = pygame.image.load('C:\python\venv\飞机大战\Python飞机大战\player.ico')转换一下,在使用get_rect方法

14行改成self.image = pygame.image.load('C:\python\venv\飞机大战\Python飞机大战\player.ico')
应该调用Surface对象的get_rect方法而非str