Bonjour à tous,

Je croyais avoir compris ce qu'était une classe, comment ça fonctionne...
Aujourd'hui je ré-essaye et crac !
Bin, non !
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)
D'accord, c'est un truc bidon...
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
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)
Et là, je suis dépassé : un truc tout bête à savoir, c'est sûr... mais que je ne sais pas !

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 :
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
Là encore, pourquoi ?

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...

@+