Bonjour, j'ai encore une erreur avec mes classes python, voici mon code :

 12 class SortAlgo:
 11
 10     from random import randint
  9
  8     def __init__(self, l):
  7         self.l = l
  6
  5     @property
  4     def lst(self):
  3         return self.__lst
  2
  1     @lst.setter
  0     def lst(self, __lst):
  1         self.__lst = [i for i in range(1,self.l)]


  1 inst = SortAlgo(5)
  0 print(inst.lst)


Merci beaucoup
Modifié par vzytoi (12 Feb 2021 - 12:25)
Modérateur
Bonjour,

Visiblement, tu n'as pas compris ce qu'était un setter.

Le setter (dans ton cas, il s'appelle lst) va se déclencher si tu fais à l'extérieur de ta classe un inst.lst = quelque chose, ou bien si tu fais à l'intérieur de ta classe mais à l'extérieur du setter bien sûr un self.lst = quelque chose.

Comme à aucun moment tu ne fais ça, le setter n'est jamais déclenché, et du coup, self.__lst n'est jamais initialisé, et du coup ton getter ne peut pas marcher lui non plus puisqu'il va chercher la valeur à retourner dans self.__lst.

Amicalement,
Meilleure solution
D'accord, merci beaucoup.
J'ai donc modifié ainsi et tout s'est bien passé !
Bonne journée

 12 class SortAlgo:
 11
 10     from random import randint
  9
  8     def __init__(self, l):
  7         self.l = l
  6         self.lst = False
  5     @property
  4     def lst(self):
  3         return self.__lst
  2
  1     @lst.setter
  0     def lst(self, __lst):
  1         self.__lst = [i for i in range(1,self.l)]

Modifié par vzytoi (12 Feb 2021 - 14:49)