Aller au contenu

Paramètres et attributs

I. méthode init n'ayant qu'un seul paramètre : self⚓︎

Testons

Le paramètre self

La méthode __init__ ci-dessous n'a qu'un seul paramètre qui est self.

Un objet instance de la classe Joueur a quatre attributs qui sont score, est_actif, nbre_parties_jouees et handicap.

Ces attributs sont tous initialisés : score initialisé à 0, est_actif initialisé à True etc...

Exécuter le script ci-dessous :

class Joueur_1:
def __init__(self):
self.score = 0
self.est_actif = True
self.nbre_parties_jouees = 0
self.handicap = 0
joueur_1 = Joueur_1()
joueur_2 = Joueur_1()
print(joueur_1.score)
print(joueur_2.score)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Deux instances

Nous avons créé deux instances de la classe Joueur.
On constate qu'à leur création, les attributs des deux objets ont les mêmes valeurs.

II. méthode init ayant plusieurs paramètres :⚓︎

Testons

Nous voulons rajouter l'attribut nom.

Exécuter le script ci-dessous :

class Joueur_2:
def __init__(self):
self.score = 0
self.est_actif = True
self.nbre_parties_jouees = 0
self.handicap = 0
self.nom = "DUPONT"
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

En procédant ainsi, tous les joueurs sont construits avec le même nom. L'attribut nom est initialisé à DUPONT.
On pourra évidemment par la suite modifier cet attribut.

Exécuter le script ci-dessous :

joueur_1 = Joueur_2()
print(joueur_1.nom)
joueur_1.nom = "Martin"
print(joueur_1.nom)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Ce n'est pas pratique ! Nous pouvons ajouter un paramètre qui va permettre d’initialiser l’attribut nom avec une valeur choisie au moment de la création de l’instance.

Testons

Nous voulons rajouter l'attribut nom.

Exécuter le script ci-dessous :

class Joueur_3:
def __init__(self, nom_joueur):
self.score = 0
self.est_actif = True
self.nbre_parties_jouees = 0
self.handicap = 0
self.nom = nom_joueur
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

On peut maintenant construire des joueurs, directement avec leur nom :

joueur_1 = Joueur_3("LAPORTE")
print(joueur_1.nom)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Résumé

Dans ce dernier exemple, les objets instances de la classe Joueur ont cinq attributs, le constructeur (la méthode init) a deux paramètres.

Remarque

👉 Très souvent, le nom du paramètre, et le nom de l'attribut auquel il va permettre de transmettre une valeur sont identiques.

On voit souvent des classes rédigées comme ci-dessous. Tester.

class Joueur_4:
def __init__(self, nom):
self.score = 0
self.est_actif = True
self.nbre_parties_jouees = 0
self.handicap = 0
self.nom = nom
joueur_1 = Joueur_4("LAPORTE")
print(joueur_1.nom)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

À vous de jouer 1

Compléter la classe Joueur pour qu'elle dispose de l'attribut age. Le constructeur devra avoir un paramètre permettant de transmettre l'âge du joueur.

class Joueur_5:
def __init__(..., ..., ...):
...
# Tests
joueur_1 = Joueur_5("BEAUGRAND", 27)
assert joueur_1.nom == "BEAUGRAND"
assert joueur_1.age == 27
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5

.128013Jl(9 _4:=vTm26j-uS8w.s3/fr7gebhpPic05a,onkyd1)t050S0D0V0M0I0c0w0f0J0c0M0w0w0j010V0I0G010406050w0r0m0m0M0A0R040s0O0c0r0:0O0P050y0`0|0~100^0G04051g191j0y1g0^0S0I0k0(0*0,0.0*0P0C0r0M0C0D0q0G0R0V0F170f0F0I0C0F0c1L0F0V0?050Z0E0c0D1s0+0-011K1M1O1M0V1U1W1S0V0A1h1G0(130w0G0M0P0.0n011Y1u010z0#0D0P0M0m0D1S1@1_1~1!211W24260?0a0f0H0A0O0G0O0w0I160P0f0X1=0A0A0D0J2r19290P1h0y1G2E1.1:1/1T0S2b1v0I0P232o1S1p1r0)1Z2O2Q0P0O2U1S0G2x1h2C2E2+0_1^2s2W1 2!0A0}0c1S0M1J2x0z0.030g0g0J2#0D1O2Z0O0q0K0q0T0?0T190M2,2/0@2.2a2;1!2?2^2`2|0D2~01303234362R390q1|040n3f3h1_3j2C2N013o0M2_1h2{0F2}2 31330X3y2!3A0x0?0x3F2B3i0^3J3m0.3M3O053Q3S3u3U3x2P3z3a0h0?0h3%1a3)3k2:1t3n0O2@3N3q3R3s3T3w3W3_3Y3a0L0?0L3 2+3*2/3K3.493=3v3V354f383a0o0?0o4l413+443-463p3P3r3t4t3^373A0B0?0B4C3H4n3l4F3L4H484J4a4L3@4e4O3a0t0?0t4T2D4V432X4Y473/3;4b3?4d4v4*0q0e0?0e4/2E2(0D2E2U2H0S1:2M3,014u2T1q1h562*3i3(3H054u5l2a0I0S0.312C3A3c4J5t5v4}3X4x3b1}2f0D5C4u5E5y1S0y3g423K0Q0?3m5n2D5R5e0u0?0f5W5r4=2=0J0?0b0O0r0D0r0A0g4k405o4E4?0=040i5%0^5^5X3J5B015w2/3A3C3:0f644(4~3`3B5H255J655D4w685O3g602-635u6k5x3a3!5A6t6d5M6w6h265K4N6f6x3F0f6K5$5`1 5T040X0z5%5Y4X5!045$615(3K0z0m0?312P2q316T6N1!5|0d6-4o5e0E5|0w356S6Z6U5{0?0N5%6M6?4X0P0?2!0m6=4W6 04716Z737b2=0?1A0D7a5)6/0?0U5~6Z6q5m6s5C6v0q3|6y6F4)6f3|0f5I7B6e4g7y6o6X6L7N6~1 6^0?6`0c6|6r744?0O0?0v7m4p7S332x727P1!7Z040j7+6.0.0m0I0?0K5 7$6c0g7x4i7A6k5L6m4h6D6j6A840q806J7N6L7,0.7R047T7V7u7X1 7.7#6}7=3L0?0D0w0V0g0M2z0I8k3H7g7n0.7.7:7f8f010Q5+040l0A5/7{8q4o7}7x4z81884 4z7F6i7H6B0q8W8c8d8D3K8h8j7$5e8o8;75770E2x0g1^0A0:8u0g0p5.0D8u7;8m7-0?8H2+8-5e7@7_8R7W5s6z7~673a4Q8X6l4 4Q8#6E826G7J9n8+8d8J8/6{8@7Y7!9D7i040F1_1p0J0M0G967h987/9P8E019e047`7s7|9j7x4,9o834 4,9s879p6f9%9y7O8r9B7U9G9R8p9h9U7604789T3K8Ga15e9~a09Z8S9i7w9l503q7}9)6f519,8%89512E3g8,6K9A6_9Ca99U8?au7%047ka44Xa38I8r9~aAa82-0y5q1k2)1959190V5baQ2K2F0M1V57aO5i600X0Z0#0w04.

III. Paramètre par défaut⚓︎

Exemple sans paramètre par défaut

Dans l'exemple précédent, les joueurs sont tous initialisés avec un attribut handicap qui vaut 0. En fait, les joueurs qui sont des "champions" ont un handicap de 50. On pourrait procéder ainsi :

class Joueur_5:

    def __init__(self, nom, age):
        self.score = 0
        self.est_actif = True
        self.nbre_parties_jouees = 0
        self.handicap = 0
        self.nom = nom
        self.age = age

Kevin = Joueur_5("DURAND", 18)
Champion_1 = Joueur_5("MAITRE", 30)
Champion_1.handicap = 50
Avec un paramètre par défaut

Il y a une autre possibilité, qui est d'utiliser le paramètre par défaut handicap = 0.

A la construction d'un objet, si le paramètre n'est pas précisé, il prendra pour valeur 0. Sinon, il prendra la valeur donnée.

Tester ci-dessous :

class Joueur_6:
def __init__(self, nom, age, handicap = 0):
self.score = 0
self.est_actif = True
self.nbre_parties_jouees = 0
self.handicap = handicap
self.nom = nom
self.age = age
Kevin = Joueur_6("DURAND", 18) # On utilise le paramètre par défaut
Champion_1 = Joueur_6("MAITRE", 30, 50) # On n'utilise pas le paramètre par défaut
print(Kevin.handicap)
print(Champion_1.handicap)
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Meilleure pratique

Dans cet exemple, il vaut mieux ne pas donner de valeur par défaut au paramètre handicap

À vous de jouer

Compléter le script ci-dessous :

  • Pas de paramètre par défaut
  • handicap est un paramètre
  • Kevin a pour nom "DURAND", âge 18 ans et ne doit pas avoir de handicap.Champion_1 a pour nom "MAITRE", âge 30 ans, doit avoir un handicap de 50.

class Joueur_7:
def __init__(...):
...
Kevin = ...
Champion_1 = ...
# Tests
assert Kevin.handicap == 0
assert Champion_1.handicap == 50
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : 5/5

.128013JA_4:2-.Sw3/7bpPiNqIo1Mtl(9 ;=vTm6ju8RsCKfrgeUEhcD05a,nkyd)050*0T0y0#0r0z0N0C0X0z0#0N0N0E010y0r0p010406050N0K0H0H0#0R0)040j0v0z0K0 0v0%050m16181a1c140p04051s1l1v0m1s140*0r0F0@0_0{0}0_0%0S0K0#0S0T0h0p0)0y0W1j0C0W0r0S0W0z1X0W0y12050/0o0z0T1E0`0|011W1Y1!1Y0y1*1,1(0y0R1t1S0@1f0N0p0#0%0}0g011.1G010Q0;0T0%0#0H0T1(23252a1:2d1,2g2i120a0C0q0R0v0p0v0N0r1i0%0C0-210R0R0T0X2D1l2l0%1t0m1S2Q1}1 1~1)0*2n1H0r0%2f2A1(1B1D0^1/2!2$0%0v2*1(0p2J1t2O2Q2`15242E2,2b2:0R190z1(0#1V2J0Q0}030d0d0X2;0T1!2/0v0h0g0h0w120C0w1l0#2{2~132}2m301:323436380T3a013c3e3g3i2%3l3l3p0g3s3u253w2O2Z013B0#351t370W393b3d3f0-3L2:3N0l3p0l3R2N3v143V3z0}3Y3!053$3(3H3*3K2#3M3m0e3p0e3?1m3^3x2 1F3A0v333Z3D3%3F3)3J3,453.3m0!3p0!4b2`3_2~3W3}4l413I3+3h4r3k3m0I3p0I4x4d3`4g3|4i3C3#3E3G4F443j3N0n3p0n4O3T4z3y4R3X4T4k4V4m4X434q4!3m0L3p0L4)2P4+4f2-4.4j3~404n424p4H4_0h0B3p0B4~3U4A3{534U3 4W4o4G3-4J3n0Z120w0Z5g504B4/555n585p4I3N0w3o045H5x4e5z544D574Y4^463n285J3Q0m3t3@3T1w2^1l2*2T0*1 2Y5j4G2)1C1t2@0T2_3v5!2P054G5^2m0r0*0}3d2O5G3D6062595q650C2r0T685E5b5I3?4Q520(123z5`5~512b0k3p6p5M5j0%0X120b0v0K0T0K0R0d4(4c5#6k2b11040f6p146J5{3V6701632~3N5V5m6V4@5a5T286c2h6e6W695F3m6!5Y3w6S6q0C6$0d643m3:4V6{6g5T3:6+2i6f4Z731(6?0C7c0C6w4-6m040-0Q6v6L1:6t047e6^7f520Q0H123d2#2C3d7l5i4-6N0A7B4,520o6N0N3h7k7r7m0}6N0$6p7e7P3X122:0H7G6r1:7R7T7s31121M0T7!3W7%6^7U7C520%120W251B0X0#0p7.5j6N0+6P6^6R2|6U616.6}0h4870896%6a47296d775S4s8c7a3t7d8r7=7H2b7J127L0z7N877?2b0v120i804-7^040N3f2J7(7V8E040E8O8C1:0H0r125w857.6{8b4u8e8l6(8n4u756-8g6:0h8(3R8s7d7)1:8w8K7M8H528Q8G7O8U3|120T0N0y0d0#2L0r8A3v8t7#0}8Q8S7;8`0}0(6z040G0R6D6Q8#8f6|6Y4K669w728n4L8.8*8h0h4L2Q8q8^9g3W8|8y9e6K9401918 7*040%0o2J0d240R0 970d0J6C0T978T8u1:9j9:9h018W8Y9u935 9w8b4$8)6.9C5r4$9Fa3788na18@9M9m019P8~9}9^9Vai4B7_7{0r7}7 9l8P129k2`9N6xan0%7|7~9|8B9~688b4{a28:5b4{a7aK5TaIac8^aeag8z9W9=8FaW959Y0v7Zas9T9?a(9;a!7YaD5_88aG9y5c9A9G8;5daN6/5b5d9K7pad7VaU9R6Ta)aYalay047,9@3Wa*awae8Jbc8!al8$a?5va^a88m5rboa|a45G5tb086a:4Abm255G6i3771a9bs3obubIbE8p6_ba0P0T0F2#bd5jbf9fbh6A9-6F6HaZ017Eb(0N5V020t0K0v0y0D0Y0U0M0c0s0Yb.b:b=b(7:bg7V9`5J4}b97D127Sa+9^c48ZaE9^82a/9SaF8abn6!bG9BbM3m0w6*8kbq8+bs6=5Z7V8J0O7`0H0p0r1j0d3rcbbeaubV8Ib!6Db$6Icf7/127Fc752b,12b}b;0D0x0c0u0G0M0Vc#b cX6Mc9cN52c40lcebAa,b)c=cK5jc40!c`cjcg120+ci5{0m5}5$5@5(5;1l0y5+dg2W2R0#1+dd0m5)6R0-0/0;0N04.

Attention

⚠️ Que l'on soit en POO ou pas, les paramètres par défauts doivent toujours se trouver après les autres.
😢 Ecriture fausse : def ma_fonction(para_1 = 0, para_2):
😊 Ecriture juste : def ma_fonction(para_1, para_2 = 0):

IV. Ecueils avec les paramètres par défauts⚓︎

Attention aux paramètres par défaut de type mutable

⚠️⚠️ Il vaut mieux qu'un paramètre par défaut ne soit pas de type mutable. Pour vous en convaincre, voici un exemple qui montre ce qu'il ne faut pas faire.
Le type list de Python est mutable

Echec

Dans cet exemple, l'attribut rencontres est la liste des adversaires rencontrés par le joueur lors des matchs précédents.

class Joueur_8:
def __init__(self, nom, age, rencontres = []): # !!! A ne pas faire
self.score = 0
self.est_actif = True
self.nbre_parties_jouees = 0
self.handicap = 0
self.nom = nom
self.age = age
self.rencontres = rencontres
def ajoute_joueur_rencontre(self, personne):
self.rencontres.append(personne)
Kevin = Joueur_8("DURAND", 18)
print("Rencontres de Kevin : ", Kevin.rencontres)
Kevin.ajoute_joueur_rencontre("MARTIN")
print("Rencontres de Kevin : ", Kevin.rencontres)
Jules = Joueur_8("DUPOND", 18) # A priori l'attribut rencontre pour Jules est la liste vide
print("Rencontres de Jules : ", Jules.rencontres) # Observez le problème
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Quel est le problème ?

Ce qui ne va pas

😭 On aurait souhaité que Jules.rencontres soit la liste vide ...

Ce qu'il aurait fallu faire

Tester ci-dessous

class Joueur_9:
def __init__(self, nom, age):
self.score = 0
self.est_actif = True
self.nbre_parties_jouees = 0
self.handicap = 0
self.nom = nom
self.age = age
self.rencontres = []
def ajoute_joueur_rencontre(self, personne):
self.rencontres.append(personne)
Kevin = Joueur_9("DURAND", 18)
print("Rencontres de Kevin : ", Kevin.rencontres)
Kevin.ajoute_joueur_rencontre("MARTIN")
print("Rencontres de Kevin : ", Kevin.rencontres)
Jules = Joueur_9("DUPOND", 18) # A priori l'attribut rencontre pour Jules est la liste vide
print("Rencontres de Jules : ", Jules.rencontres) # On voit que c'est bien le cas !
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Initialiser un paramètre, ou créer un paramètre par défaut ?

Nous venons de voir que ce n'est pas équivalent d'initialiser un paramètre, ou de créer un paramètre par défaut.

Il faut toujours avoir en tête le problème des paramètres de types mutables.

💡 Deux exemples sur le caractère mutable des listes en Python⚓︎

🤔 Un premier exemple

Tester ci-dessous

liste_1 = [1, 2, 3]
liste_2 = liste_1
print("liste_1 = ", liste_1)
print("liste_2 = ", liste_2, "cela semble logique")
liste_1.append(4)
print("liste_1 = ", liste_1, "c'est logique")
print("liste_2 = ", liste_2, "😭 liste_2 a aussi été modifiée !!!")
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

🤔 Un deuxième exemple

Tester ci-dessous

class Joueur_10:
def __init__(self, nom, age, rencontres):
self.score = 0
self.est_actif = True
self.nbre_parties_jouees = 0
self.handicap = 0
self.nom = nom
self.age = age
self.rencontres = rencontres
def ajoute_joueur_rencontre(self, personne):
self.rencontres.append(personne)
mes_rencontres = ["PROBLEME", "MUTABLE"]
Kevin = Joueur_10("DURAND", 18, mes_rencontres)
Jules = Joueur_10("DUPOND", 18, mes_rencontres)
# A priori on n'ajoute pas "MARTIN" à la liste de rencontres de Jules
Kevin.ajoute_joueur_rencontre("MARTIN")
print("Rencontres de Kevin : ", Kevin.rencontres)
print("Rencontres de Jules : ", Jules.rencontres) # 😭 Hélas "MARTIN" a été ajouté
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
rounded
>>> 
 
x
x
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

En conclusion sur les types mutables

😂 Toujours bien réfléchir lorsqu'on les utilise !

V. Utilisation des paramètres par défaut dans le cas des arbres⚓︎

Avec les arbres

🌴 Lorsque l'on travaille avec des arbres, il est très courant d'utiliser des paramètres par défaut. C'est un cas où leur utilisation est intéressante. Nous le verrons plus précisément lorsque nous les étudierons.

VI. QCM⚓︎

Cocher la bonne réponse

Ce QCM porte sur cet exemple :

class Participant:

    def __init__(self, nom_participant, age_participant, handicap_participant = 0):
        self.score = 0
        self.est_actif = True
        self.nbre_parties_jouees = 0
        self.handicap = nbre_handicap
        self.nom = nom_participant
        self.age = age_participant
  1. handicap est :

  2. La méthode __init__ possède :

  3. ada = Participant('Lovelace', 26)
    

    Le nombre d'attributs d'ada est

  4. La méthode __init__ possède :

  5. score est :

  6. handicap_participant est :

  7. on parle d'attribut pour

Les réponses resteront cachées...