Bonjour à tous,
Je croyais avoir compris ce qu'était une classe, comment ça fonctionne...
Aujourd'hui je ré-essaye et crac !
Bin, non !
D'accord, c'est un truc bidon...
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 import random class sommes(object): def __init__(self,fin): n=random.randint(3,fin) return n def test(self,i): n+=i if n%2==0: c.pair(n) else: c.impair(n) return def pair(self,n): print n,n*(n+1)/2 return def impair(self,n): print n,n**2 return c=sommes() for i in range(12): c.test(i)
Mais je voulais initialiser un nombre n, à l'intérieur de la classe, par un choix aléatoire entre 3 et 10 à la création d'une instance.
Puis je voulais en boucle ajouter la valeur de i à ce nombre n, tester si le nouveau nombre est pair ou impair et, selon, afficher la bonne valeur de la somme soit des n premiers nombres entiers soit de la somme des n premiers pairs.
Et j'ai ce message d'erreur
Et là, je suis dépassé : un truc tout bête à savoir, c'est sûr... mais que je ne sais pas !Traceback (most recent call last):
File "C:\Python26\essai_classe.py", line 24, in <module>
c=sommes()
TypeError: __init__() takes exactly 2 arguments (1 given)
D'autre part,
si j'appelle pair(n) et impair(n) au lieu de c.pair(n) et c.impair(n), j'ai aussi un message d'erreur :
Là encore, pourquoi ?Traceback (most recent call last):
File "C:\Python26\essai_classe.py", line 21, in <module>
c.test(i)
File "C:\Python26\essai_classe.py", line 8, in test
impair(n)
NameError: global name 'impair' is not defined
Je commence à douter savoir écrire un jour une classe, même simple, sans erreur...
Et tant que je ne sais pas faire ça, je ne progresserai pas en Python : j'ai uun seuil à franchir.
M'enfin, je persiste quand même.
Merci d'avance à l'âme charitable qui voudra bien prendre de son temps pour éclairer mon chemin...
@+
Partager