IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Créer une classe


Sujet :

Python

  1. #21
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Salut.

    Pas besoin de chercher bien loin pour se rendre compte que self.niveau_chair n'a pas été défini.
    Sans doute que cela devrait être niveau_chair et non self.niveau_chair.

  2. #22
    Membre éclairé Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 495
    Par défaut effectivemet,
    Citation Envoyé par bistouille Voir le message
    Salut.

    Pas besoin de chercher bien loin pour se rendre compte que self.niveau_chair n'a pas été défini.
    Sans doute que cela devrait être niveau_chair et non self.niveau_chair.
    Oui j'ai trouve moi même la réponse en regardant le code.

    ce n'est pas la seule erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    # coding: utf-8 
    """
    Chair : Cet aspect représente la vigueur, la puissance du corps et sa beauté.
            Déplacement : Capacité du personnage à se déplacer vite et gracieusement.
            Force : Puissance brute du personnage et ce qu’il est capable de soulever.
            Endurance : Résistance du personnage à la fatigue, aux maladies, poisons, climats.
     
    Bête : Cet aspect représente les instincts du personnage et l’acuité de ses sens.
            Hargne : Combativité du personnage, son courage face à l’adversité.
            Combat : Utilisé dans toutes les formes de combat au contact.
            Instinct : Intuition du personnage, ses réflexes, son sens de l’orientation.
            
    Machine : Cet aspect représente l’intellect froid et mécanique,la capacité à raisonner et à mémoriser.
            Tir : Talent qu’a le personnage pour manipuler des armes de tir ou de lancer.
            Savoir : Ensemble des savoirs académiques et scientifiques du personnage ainsi que les soins.
            Technique : Connaissances et aptitudes techniques du personnage.
            
            
    Dame : Cet aspect est le charme et le charisme, la capacité à séduire et à parler en public.
            Aura : Magnétisme du personnage, son charisme brut, son charme.
            Parole : Capacité qu’a le personnage à bien parler, convaincre, à décrire, à conter.
            Sang-Froid : Volonté du personnage, sa capacité à contrôler l’ensemble de ses émotions.
     
    Masque : Cet aspect symbolise la capacité à être discret, à mentir, à trahir.
            Discrétion : Capacité qu’a le personnage à dissimuler des choses et à se dissimuler.
            Dextérité : L’adresse, la souplesse et le doigté du personnage.
            Perception : Qualité des sens du personnage, son empathie, sa capacité d’analyse.
     
    La valeur des caractéristiques secondaires ne peut pas être supérieur à la caractéristique primaire.
    Toute valuation de celle-ci doit donc être conditionnée.
    Chair --> caractéristique primaire
            Déplacement --> caractéristique dépendante de Chair
            Force --> caractéristique dépendante de Chair
            Endurance --> caractéristique dépendante de Chair
            
     
            
    """	
     
    from dataclasses import dataclass
     
     
    @dataclass
    class caracteristique_secondaire(object):
    	nom : str
    	description : str
    	niveau : int 
     
    class caracteristique_primaire(object):
    	def __init__(self, nom , description , niveau):
    		self.nom  = nom
    		self.description= description
    		self.niveau  =niveau
    		self.car_secondaire  = []
     
    	def __str__(self):
    		s = '\n\t'.join(str(e) for e in self.car_secondaire)
    		return self.nom + ': ' + str(self.niveau) + '\n\t' + s		
     
     
    	def ajouter_car_secondaire(self,car_sec):
    		self.car_secondaire.append(car_sec )
     
    """
    Chair : Cet aspect représente la vigueur, la puissance du corps et sa beauté.
            Déplacement : Capacité du personnage à se déplacer vite et gracieusement.
            Force : Puissance brute du personnage et ce qu’il est capable de soulever.
            Endurance : Résistance du personnage à la fatigue, aux maladies, poisons, climats.
    """	
    class C_Chair(object):
    	def __init__(self, niveau_chair ,niveau_deplacement,niveau_force,niveau_endurance):
     
    		# définiton primaire
    		self.car_chair = caracteristique_primaire('Chair',None , niveau_chair )
    		self.car_chair.description = 'Cet aspect représente la vigueur, la puissance du corps et sa beauté.'
    		# définiton secondaire 
    		car_deplacement = caracteristique_secondaire('Déplacement',None,niveau_deplacement)
    		car_deplacement.description = 'Capacité du personnage à se déplacer vite et gracieusement.'
     
    		car_force =  caracteristique_secondaire('Force',None,niveau_force)
    		car_force.description  = 'Puissance brute du personnage et ce qu’il est capable de soulever.'
     
    		car_endurance = caracteristique_secondaire('Endurance',None,niveau_endurance)
    		car_endurance.description = 'Résistance du personnage à la fatigue, aux maladies, poisons, climats.'
     
    		if(niveau_chair < niveau_deplacement) :
    			print('Probleme le déplacement (' + str(niveau_deplacement)+') ne peut être  suppérieur à la caractéristique chair ('+ str(niveau_chair)+ ')')
    			exit(1)
     
     
    		if(niveau_chair < niveau_force) :
    			print('Probleme la force (' + str(niveau_force)+') ne peut être  suppérieur à la caractéristique chair ('+ str(niveau_chair)+ ')')
    			exit(1)
     
    		if(niveau_chair < niveau_endurance) :
    			print('Probleme l'/' endurancee (' + str(niveau_endurance)+') ne peut être  suppérieur à la caractéristique chair ('+ str(niveau_chair)+ ')')
    			exit(1)
     
     
    		self.car_chair.ajouter_car_secondaire(car_force)
    		self.car_chair.ajouter_car_secondaire(car_deplacement)
    		self.car_chair.ajouter_car_secondaire(car_endurance)
     
     
     
    if __name__ == '__main__':
     
    	car_chair =C_Chair(3,5,3,3)
     
    	print(car_chair)
    autres points le If .... exit(1) n'est pas pertiant car sauf erreur on ne peux pas l'utiliser comme notification d'erreur au programme utilisant la class.

    il me fait trouver une solution

  3. #23
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par dedalios Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		if(niveau_chair < niveau_deplacement) :
    			print('Probleme le déplacement (' + str(niveau_deplacement)+') ne peut être  suppérieur à la caractéristique chair ('+ str(niveau_chair)+ ')')
    			exit(1)

    autres points le If .... exit(1) n'est pas pertiant car sauf erreur on ne peux pas l'utiliser comme notification d'erreur au programme utilisant la class.

    il me fait trouver une solution
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		if(niveau_chair < niveau_deplacement) :
    			raise ValueError("Problème le déplacement (%d) ne peut pas être supérieur à la caractéristique chair (%d)" % (niveau_deplacement, niveau_chair))
    Et l'appelant, lui, pourra alors utiliser try... except ValueError...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #24
    Membre éclairé Avatar de dedalios
    Homme Profil pro
    concepteur d'application
    Inscrit en
    Février 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : concepteur d'application
    Secteur : Santé

    Informations forums :
    Inscription : Février 2008
    Messages : 495
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		if(niveau_chair < niveau_deplacement) :
    			raise ValueError("Problème le déplacement (%d) ne peut pas être supérieur à la caractéristique chair (%d)" % (niveau_deplacement, niveau_chair))
    Et l'appelant, lui, pourra alors utiliser try... except ValueError...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    class C_Chair(Caracteristique_primaire):
    	def __init__(self, niveau_chair ,niveau_deplacement,niveau_force,niveau_endurance):
     ....
     
    		if(niveau_chair < niveau_deplacement) :
    			raise ValueError("Problème le %s (%d) ne peut pas être supérieur à la caractéristique %s (%d)" % (car_deplacement.nom, niveau_deplacement, self.car_chair.nom ,niveau_chair))
    ...	
     
    if __name__ == '__main__':
     
    	while True:
    		try:
    			car_chair = int(input("Caractéritique Chair: "))
    			car_deplacement = int(input("Caractéritique deplacement: "))
    			car_force = int(input("Caractéritique force: "))
    			car_endurance  = int(input("Caractéritique endurance: "))
    			chair = C_Chair(car_chair,car_deplacement,car_force,car_endurance)
    			print(chair.car_chair.description )
    			print(chair.car_chair )
    			break
    		except ValueError:
    			raise
    j'ai recherche comme utiliser l'exception ValueError pour boucler sur la saisie sans trouver

  5. #25
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par dedalios Voir le message
    j'ai recherche comme utiliser l'exception ValueError pour boucler sur la saisie sans trouver
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    except ValueError(e):
    	pass
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    except ValueError(e):
    	continue
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    except ValueError(e):
    	print("Erreur de saisie - %s" % e)
    Faudrait aussi peut-être revoir les cours d'algorithmie. Passe encore que tu n'aies pas su le pass qui est spécifique au langage (mais qui n'est pas forcément expliqué avec beaucoup d'insistance dans les tutos) et qui n'a pour rôle que de mettre une instruction neutre là où une instruction est obligatoire... mais le continue lui tu aurais dû y penser vu que tu veux recommencer la boucle et que c'est justement son rôle de faire recommencer une boucle !!!

    Et puis putain ouvre un livre Python quoi. Ca te permettra de comprendre ce que fait raise et donc ça t'évitera de le mettre au petit bonheur. Quand tu m'as indiqué ce que faisait le dataclasse, je suis allé voir et j'ai mieux compris le principe (même si je n'ai pas encore compris l'utilité). Donc ce serait bien que tu fasses pareil...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 40
    Dernier message: 21/06/2007, 17h58
  2. Réponses: 14
    Dernier message: 28/02/2007, 09h53
  3. Réponses: 1
    Dernier message: 09/02/2007, 12h28
  4. Créer une classe commune à +sieurs fiches
    Par rtg57 dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/05/2006, 17h58
  5. Réponses: 4
    Dernier message: 08/10/2005, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo