web-dev-qa-db-fra.com

Python pour les modules

J'ai un module dont le but est de définir une classe appelée "nib". (et quelques classes associées aussi.) Comment dois-je appeler le module lui-même? "plume"? "nibmodule"? Rien d'autre?

93
Ram Rachum

Juste la plume. Nommez la classe Nib, avec un N majuscule. Pour plus d'informations sur les conventions de dénomination et d'autres conseils de style, voir PEP 8 , le Python).

105
Stephan202

Je l'appellerais nib.py. Et je nommerais aussi la classe Nib.

Dans un projet plus large python), nous avons beaucoup de modules définissant une classe importante. Les classes sont nommées en commençant par une lettre majuscule. Les modules sont nommés comme la classe en minuscules. Cela conduit à des importations comme suit:

from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs

C'est un peu comme émuler la manière Java. Une classe par fichier. Mais avec la flexibilité supplémentaire, vous pouvez toujours ajouter une autre classe à un seul fichier si cela a du sens.

40
rincewind

Je sais que ma solution n’est pas très populaire du point de vue de Pythonic, mais je préfère utiliser l’approche Java d’un module-> une classe, le module portant le nom de classe. Je le fais comprendre la raison du style python), mais je n'aime pas trop avoir un très gros fichier contenant beaucoup de classes. Je trouve difficile de naviguer malgré le pliage.

Une autre raison est le contrôle de version: avoir un fichier volumineux signifie que vos commits ont tendance à se concentrer sur ce fichier. Cela peut potentiellement conduire à une plus grande quantité de conflits à résoudre. Vous perdez également les informations de journal supplémentaires que votre validation modifie des fichiers spécifiques (impliquant donc des classes spécifiques). Au lieu de cela, vous voyez une modification du fichier de module, avec uniquement le commentaire de validation pour comprendre quelle modification a été effectuée.

En résumé, si vous préférez la philosophie python, consultez les suggestions des autres articles. Si vous préférez plutôt la philosophie de type Java, créez un Nib.py contenant la classe Nib.

27
Stefano Borini

la plume va bien. En cas de doute, reportez-vous au guide de style Python.

De PEP 8 :

Noms des modules et des modules Les modules doivent avoir des noms courts en minuscules. Les traits de soulignement peuvent être utilisés dans le nom du module si cela améliore la lisibilité. Python devraient également porter des noms courts en minuscules, bien que l'utilisation des caractères de soulignement soit déconseillée.

Etant donné que les noms de modules sont mappés sur les noms de fichiers et que certains systèmes de fichiers ne font pas la distinction entre les majuscules et les minuscules, il est important de choisir des noms de modules assez courts. problème lorsque le code est transporté vers des versions plus anciennes de Mac ou Windows, ou DOS.

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

21
thedz

De PEP-8: noms des packages et des modules :

Les modules doivent avoir des noms courts en minuscules. Les traits de soulignement peuvent être utilisés dans le nom du module si cela améliore la lisibilité.

Les packages Python devraient également porter des noms courts en minuscules, bien que l'utilisation des caractères de soulignement soit déconseillée.

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

0
Ehsan