'int' object is not callable
Python
Erreur courante
Explication
L'erreur `TypeError: 'int' object is not callable` survient quand vous essayez d'**appeler** (avec des parenthèses `()`) un objet qui est un entier, pas une fonction. La cause la plus fréquente : vous avez **écrasé une fonction intégrée** (comme `sum`, `list`, `max`, `len`) en lui donnant le nom d'une variable entière, puis vous tentez de l'appeler.
```python
sum = 10 # on écrase la fonction builtin sum
total = sum([1, 2, 3]) # on essaie d'appeler un int
# TypeError: 'int' object is not callable
```
Causes courantes
- **Variable nommée comme une fonction intégrée** : `sum`, `list`, `int`, `max`, `min`, `id`, `type`... - **Réaffectation d'un nom de fonction** par une valeur entière. - **Multiplication implicite oubliée** : `2(3 + 1)` essaie d'appeler `2` ; il faut `2 * (3 + 1)`.
1. Renommez la variable
total_articles = 10
total = sum([1, 2, 3]) # ✅ sum est de nouveau la fonction
2. Restaurez la fonction intégrée écrasée
Si l'écrasement vient d'un test rapide dans un notebook :
del sum # supprime la variable, sum redevient la fonction builtin
3. Ajoutez l'opérateur de multiplication
resultat = 2 * (3 + 1) # ✅ et non 2(3 + 1)
Comment prevenir cette erreur
- **N'utilisez jamais les noms des fonctions intégrées** comme variables (`list`, `dict`, `str`, `sum`, `id`, `type`...).
- **Activez un linter** : `pylint` signale `redefined-builtin`.
- En cas de doute, vérifiez le type : `print(type(sum))` doit afficher `<class 'builtin_function_or_method'>`.
Besoin d'aide sur votre projet ?
Besoin d'aide sur un probleme technique ? Decrivez-le pour des recommandations.
Nous contacterQuestions frequentes
Comment savoir quelle fonction j'ai écrasée ?
L'erreur indique le type (`'int' object`). Cherchez dans votre code une affectation comme `sum = ...`, `list = ...`, `len = ...`. C'est cette ligne qui a remplacé la fonction par un entier.
La même erreur existe-t-elle pour d'autres types ?
Oui : `'str' object is not callable`, `'list' object is not callable`, etc. Le principe est identique — vous appelez avec `()` quelque chose qui n'est pas une fonction.