CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Erreur python que je n'arrive pas a résoudre

Hawsky
Hawsky
Niveau 7
09 février 2017 à 16:27:24

Bonjour,
http://pastebin.com/CXBNWBm7
J'ai cette erreur la quand je rentre une lettre :
Traceback (most recent call last):
File "C:\Users\Axel\Desktop\pendi.py", line 154, in <module>
logiciel = Pendu()
File "C:\Users\Axel\Desktop\pendi.py", line 23, in __init__
self.start_game()
File "C:\Users\Axel\Desktop\pendi.py", line 36, in start_game
self.le_jeu()
File "C:\Users\Axel\Desktop\pendi.py", line 62, in le_jeu
self.pendu_graphic(erreurs)
AttributeError: 'Pendu' object has no attribute 'pendu_graphic'

Une idée ?

Ebara
Ebara
Niveau 16
09 février 2017 à 16:33:33

Je suis pas un grand fou de Python, mais, si je ne m'abuse, ta méthode "pendu_graphic()" n'est pas incluse dans ta classe Pendu..

Le "self" désigne une méthode ou un attribut de la classe courante.

Juste un conseil pour le développement: utilise soit l'anglais, soit le français (inutile de préciser que l'anglais est le mieux), mais pas les deux. :)

Message édité le 09 février 2017 à 16:33:50 par Ebara
Hawsky
Hawsky
Niveau 7
09 février 2017 à 16:36:16

Le 09 février 2017 à 16:33:33 Ebara a écrit :
Je suis pas un grand fou de Python, mais, si je ne m'abuse, ta méthode "pendu_graphic()" n'est pas incluse dans ta classe Pendu..

Le "self" désigne une méthode ou un attribut de la classe courante.

Juste un conseil pour le développement: utilise soit l'anglais, soit le français (inutile de préciser que l'anglais est le mieux), mais pas les deux. :)

C'était ça ! Merci ! Mais du coup la fenetre avec mon pendu ne s'affiche plus [[sticker:p/1lmk]]

Ebara
Ebara
Niveau 16
09 février 2017 à 16:40:25

C'est parce que tu accèdes à ta variable "Canvas" depuis cette fonction, or si tu l'intègres dans une classe tu n'as plus accès à cette variable

Hawsky
Hawsky
Niveau 7
09 février 2017 à 16:42:26

Le 09 février 2017 à 16:40:25 Ebara a écrit :
C'est parce que tu accèdes à ta variable "Canvas" depuis cette fonction, or si tu l'intègres dans une classe tu n'as plus accès à cette variable

Donc comme ça c'est pas bon ?

https://image.noelshack.com/fichiers/2017/06/1486654897-capture.png

Ebara
Ebara
Niveau 16
09 février 2017 à 16:47:13

De mon point de vue (développeur PHP en vue, désolé d'avance :hap: ) ta vérif sur l'entrée standard est mal placée..

Ta classe "pendu" ne devrait contenir que les données nécessaires à son fonctionnement, et l'entrée du joueur devrait se faire dans une boucle du genre


while(gameover != False):

Ainsi tu peux attributer une propriété "nb_errors" à ta classe "Pendu", ainsi qu'un getter et un setter.

Du coup on aurait quelque chose comme:



while Pendu->getGameOver() != False:
    ########################
    ## Partie où le joueur joue ##
    ########################

   if Pendu->getNbErrors() < 9:
       # Tes conditions et modif de canvas
   else:
       Pendu->setGameOver(True)

Voilà voilà. Il peut y avoir des fautes de syntaxe et de langage, je suis vraiment pas habitué au python, mais ça résumé une bonne partie de ma vision. Je ne sais pas si c'est parfaitement faisable dans le langage donc je laisse quand même le soin à quelqu'un d'autre de confirmer mes dires

Ebara
Ebara
Niveau 16
09 février 2017 à 16:48:21

Le 09 février 2017 à 16:42:26 Hawsky a écrit :

Le 09 février 2017 à 16:40:25 Ebara a écrit :
C'est parce que tu accèdes à ta variable "Canvas" depuis cette fonction, or si tu l'intègres dans une classe tu n'as plus accès à cette variable

Donc comme ça c'est pas bon ?

https://image.noelshack.com/fichiers/2017/06/1486654897-capture.png

Non, ta variable Canvas n'a pas la portée suffisante pour être modifiée depuis l'intérieur d'une classe. Et elle ne doit de toute façon pas l'avoir à mon sens

Hawsky
Hawsky
Niveau 7
09 février 2017 à 16:48:54

Le 09 février 2017 à 16:47:13 Ebara a écrit :
De mon point de vue (développeur PHP en vue, désolé d'avance :hap: ) ta vérif sur l'entrée standard est mal placée..

Ta classe "pendu" ne devrait contenir que les données nécessaires à son fonctionnement, et l'entrée du joueur devrait se faire dans une boucle du genre


while(gameover != False):

Ainsi tu peux attributer une propriété "nb_errors" à ta classe "Pendu", ainsi qu'un getter et un setter.

Du coup on aurait quelque chose comme:



while Pendu->getGameOver() != False:
    ########################
    ## Partie où le joueur joue ##
    ########################

   if Pendu->getNbErrors() < 9:
       # Tes conditions et modif de canvas
   else:
       Pendu->setGameOver(True)

Voilà voilà. Il peut y avoir des fautes de syntaxe et de langage, je suis vraiment pas habitué au python, mais ça résumé une bonne partie de ma vision. Je ne sais pas si c'est parfaitement faisable dans le langage donc je laisse quand même le soin à quelqu'un d'autre de confirmer mes dires

Ok je vois ce que tu veux dire merci beaucoup de m'avoir accordé ton temps :)

Ebara
Ebara
Niveau 16
09 février 2017 à 16:50:59

Le 09 février 2017 à 16:48:54 Hawsky a écrit :

Le 09 février 2017 à 16:47:13 Ebara a écrit :
De mon point de vue (développeur PHP en vue, désolé d'avance :hap: ) ta vérif sur l'entrée standard est mal placée..

Ta classe "pendu" ne devrait contenir que les données nécessaires à son fonctionnement, et l'entrée du joueur devrait se faire dans une boucle du genre


while(gameover != False):

Ainsi tu peux attributer une propriété "nb_errors" à ta classe "Pendu", ainsi qu'un getter et un setter.

Du coup on aurait quelque chose comme:



while Pendu->getGameOver() != False:
    ########################
    ## Partie où le joueur joue ##
    ########################

   if Pendu->getNbErrors() < 9:
       # Tes conditions et modif de canvas
   else:
       Pendu->setGameOver(True)

Voilà voilà. Il peut y avoir des fautes de syntaxe et de langage, je suis vraiment pas habitué au python, mais ça résumé une bonne partie de ma vision. Je ne sais pas si c'est parfaitement faisable dans le langage donc je laisse quand même le soin à quelqu'un d'autre de confirmer mes dires

Ok je vois ce que tu veux dire merci beaucoup de m'avoir accordé ton temps :)

A savoir que quand je parle de propriétés de classe, il va de soit que je parle de propriétés protected, que tu modifies/récup via des accesseurs :)

Et cette fameuse boucle ne doit pas intervenir au sein de la classe Pendu mais après son instanciation

De rien, bon courage

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment