Type object 'player' has no attribute 'image'

Résolu
pyro_ - Modifié le 22 août 2023 à 17:24
Diablo76 Messages postés 155 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 27 avril 2024 - 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 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
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 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
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 155 Date d'inscription vendredi 25 novembre 2022 Statut Membre Dernière intervention 27 avril 2024 40
22 août 2023 à 18:59

Salut,

Et le constructeur ne se nomme pas :

def __int__(self):
1
yg_be Messages postés 22731 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2024 1 477
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