web-dev-qa-db-fra.com

Classes vs modules dans Python

Python possède de nombreux modules (tels que re ) qui effectuent un ensemble spécifique d'actions. Vous pouvez appeler les fonctions de ce module et obtenir des résultats, et le module dans son ensemble a une idée derrière lui (dans ce cas, traitant des expressions régulières).

Les classes semblent faire presque exactement la même chose, mais elles semblent également utiliser un peu plus les propriétés que les modules.

En quoi les modules sont-ils différents des classes? (Je sais que je ne peux pas sous-classer un module, mais est-ce le cas?) Quand dois-je utiliser une classe au lieu d'un module?

22
Pro Q

Un module python n'est rien d'autre qu'un package pour encapsuler du code réutilisable. Les modules résident généralement, mais pas toujours, dans un dossier avec un __init__.py fichier à l'intérieur. Les modules peuvent contenir des fonctions mais aussi des classes. Les modules sont importés à l'aide du mot clé import.

Python a un moyen de mettre des définitions dans un fichier et de les utiliser dans un script ou dans une instance interactive de l'interpréteur. Un tel fichier est appelé module; les définitions d'un module peuvent être importées dans d'autres modules ou dans le module principal.

En savoir plus sur les modules Python à ces liens:

https://docs.python.org/2/tutorial/modules.html (Python 2) https://docs.python.org/3/tutorial/modules.html (Python 3)

Les classes, en revanche, peuvent être définies dans votre code d'application principal ou dans des modules importés par votre application. Les classes sont le code de la programmation orientée objet et peuvent contenir des propriétés et des méthodes.

En savoir plus sur les classes Python à ces liens:

https://docs.python.org/2/tutorial/classes.html (Python 2) https://docs.python.org/3/tutorial/classes.html (Python 3)

13
Eneko Alonso

Si c'est un tas de fonctions pures, par exemple re, je les ai mis dans un module. J'utilise une classe quand je sais qu'il y a un état que je veux conserver avec ce code (par exemple un fichier qui est lu une fois, mais dont les données sont utilisées par plusieurs des fonctions).

0
Greg Bell