Demande d'info python


#1

Je viens vers vous, car là je découvre à l’instant python. J’ai l’habitude du C++, et donc il va faloir un temps d’adaptation !
Je suis en train de gratter les sources de FreeCAD, et je viens de tomber là dessus, le programme plante lamentablement à cette ligne:
val = str(obj.Color[:3])
Que veulent dire ces deux points entre corchet ? Les crochers sont normalement synonyme de tableau et ne prennent que des valeurs int :face_with_raised_eyebrow:
Ou alors c’est une faute de frappe, et le gars à inséré un smiley bisous à la place d’une valeur d’index ^^
ah oui et puis si je met pas le message d’erreur :

<class 'RecursionError'>: maximum recursion depth exceeded while getting the repr of an object

#2

Bonjour,

Il s’agit d’un slice sur un élément de type séquence. Prenons l’exemple d’une liste :

>>> maliste = ['a','b','c','d']
>>> maliste[0]
'a'
>>> maliste[1:3]
['b', 'c']
>>> maliste[0:3]
['a', 'b', 'c']
>>> maliste[:3]
['a', 'b', 'c']
>>> maliste[2:]
['c', 'd']

Avant le “:”, on précise l’index de la valeur pour débuter le slice, et après la fin. Si il n’y a rien, on prend depuis le début de la liste.


#3

Donc en gros là on est en train de dépasser la taille du tableau/séquence avec le slice ??
genre on a un tableau/séquence vide ?


#4

Non : la fonction str() tente de donner une représentation de l’objet, mais pour une raison ou une autre, la méthode de représentation semble appeler l’objet en boucle infinie.
Difficile de dire pourquoi exactement sans le reste du code.