web-dev-qa-db-fra.com

Association entre nommer les classes et nommer leurs fichiers en python (convention?)

En python (et dans d'autres langages), j'ai appris que le nom d'une classe doit être écrit en petites lettres à l'exception de la première lettre, qui doit être une majuscule. Exemple:

class FooBar:
    ...

Une classe doit aller dans un fichier, nommé de la même manière que la classe. Dans cet exemple, ce serait un fichier foobar.py. Si je veux importer la classe foo quelque part, je dois faire ceci:

from foobar import FooBar

Cette convention me trouble un peu. Mon intuition me dit que si le nom de fichier indique une classe, alors il devrait être écrit avec la première lettre en majuscules aussi, comme FooBar.py. Cela n'a pas l'air joli dans les noms de fichiers. Peut-être que quelqu'un pourrait me dire quelle est la convention standard pour cela?

J'espère avoir rendu ma question compréhensible. :-)

52
Aufwind

Ce que vous avez présenté est la convention standard.

Noms des packages et des modules

Les modules doivent avoir des noms courts tout en minuscules. Les traits de soulignement peuvent être utilisés dans le nom du module s'il améliore la lisibilité. Python doivent également avoir des noms courts tout en minuscules, bien que l'utilisation de soulignements soit déconseillée.

Étant donné que les noms de modules sont mappés sur des noms de fichiers et que certains systèmes de fichiers ne respectent pas la casse et tronquent les noms longs, il est important que les noms de modules soient choisis pour être assez courts - ce ne sera pas un problème sur Unix, mais ce peut être un problème lorsque le code est transporté vers d'anciennes versions Mac ou Windows ou DOS.

Lorsqu'un module d'extension écrit en C ou C++ est accompagné d'un module Python qui fournit une interface de niveau supérieur (par exemple plus orienté objet), le module C/C++ a un trait de soulignement (par exemple _socket).

Noms de classe

Presque sans exception, les noms de classe utilisent la convention CapWords. Les classes à usage interne ont également un trait de soulignement.

( Guide de style Python )


Voir par exemple.

from configparser import ConfigParser

(qui, soit dit en passant, était ConfigParser dans Python 2.x mais changé en minuscule dans 3.x).

52
Katriel

PEP 8 dit:

Les modules doivent avoir des noms courts tout en minuscules. Les traits de soulignement peuvent être utilisés dans le nom du module s'il améliore la lisibilité. Python doivent également avoir des noms courts tout en minuscules, bien que l'utilisation de soulignements soit déconseillée.

Je noterai également que vous ne devriez pas nécessairement avoir une seule classe par fichier. Vous devez plutôt inclure les classes liées ensemble dans le même fichier. (Bien sûr, dans certains cas, avoir une classe dans un fichier fonctionne, mais ce n'est pas toujours le cas)

11
Winston Ewert