Type object 'player' has no attribute 'image'

Résolu/Fermé
pyro_ - Modifié le 22 août 2023 à 17:24
Diablo76 Messages postés 213 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 15 février 2025 - 22 août 2023 à 18:59

Bonjour,

Voici mon code :

from typing import Union
import player as player
import pygame
from pygame import Surface
from pygame.surface import SurfaceType

pygame.init()

class player(pygame.sprite.Sprite):
    def __int__(self):
        super().__init__()
        self.velocity = 5
        self.image = pygame.image.load('assets/joueur 1.png')
        self.rect = self.image.get_rect()

pygame.display.set_caption("nba_2023")

screen: Union[Surface,SurfaceType] = pygame.display.set_mode((1320,720))

background = pygame.image.load('assets/terrain final nba_2023.png')

player = Player()

running = True

while running:
    screen.blit(background,(-49, 40))
    screen.blit(Player.image, Player.rect)
    pygame.display.flip()
    for event in pygame.event.get():
        if event.type == pygame.QUIT():
            running = False
            pygame.quit()

À chaque fois que je le lance il me dit erreur.
Windows / Edge 115.0.1901.200

A voir également:

3 réponses

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
21 août 2023 à 11:58

Bonjour,

class player(pygame.sprite.Sprite):

Nom de la classe : player sans majuscule

player = Player()

Nom de la classe : Player avec une majuscule 

Etonnant, non ?

1
mamiemando Messages postés 33535 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 12 février 2025 7 828
Modifié le 22 août 2023 à 17:27

Bonjour,

Juste pour préciser ce que dit Phil_1857 : ton erreur vient du fait que tu confonds le nom de la classe (le type) et le nom de l'instance (la variable). Par convention, en python, les noms de variables commencent par une minuscules et les noms de classes commencent par une console.

Vu que ligne 22, tu écris :

player = Player()
  • player est un nom d'instance (variable)
  • Player est un nom de classe (type)

Or si on regarde ligne 9, ta classe est déclarée avec un nom qui commence par une minuscule. Il faut donc corriger cette ligne en :

class Player:

Bonne chance

0
Diablo76 Messages postés 213 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 15 février 2025 51
22 août 2023 à 18:59

Salut,

Et le constructeur ne se nomme pas :

def __int__(self):
1
yg_be Messages postés 23471 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 février 2025 Ambassadeur 1 568
21 août 2023 à 11:54

pour commencer, arrête d'utiliser ainsi le nom "player" pour tant d'éléments différents.

Utilise un autre nom pour ta classe ainsi que pour ta variable

class personnage(pygame.sprite.Sprite):





joueur = Player()
0