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?
Réponses
Trop de publicités?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 guide de styles Python.
Je dirais que c'nib.py. Et je voudrais aussi le nom de la classe Plume.
Dans un plus grand projet de python, je suis en train de travailler sur, nous avons beaucoup de modules définissant essentiellement une classe importante. Les Classes sont nommées en commençant avec une 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 l'émulation de la Java. Une classe par fichier. Mais avec la flexibilité supplémentaire, que vous pouvez toujours ajouter une autre classe dans un fichier unique si elle fait sens.
Je sais que ma solution n'est pas très populaire de la pythonic point de vue, mais je préfère utiliser le Java approche d'un module->une classe, avec le module nommé en tant que classe. Je comprends la raison derrière le python de style, mais je ne suis pas trop friand d'avoir un très gros fichier contenant beaucoup de classes. Je trouve cela difficile à parcourir, malgré le pliage.
Une autre raison est la version de contrôle: le fait d'avoir un fichier de grande taille signifie que vos commits ont tendance à se concentrer sur ce fichier. Cela peut potentiellement entraîner une augmentation de la quantité de résoudre des conflits. Vous aussi lâche le journal supplémentaire de l'information que votre livraison modifie des fichiers spécifiques (donc impliquant des classes spécifiques). Au lieu de cela, vous voyez une modification du fichier de module, avec seulement la validation des commentaires pour comprendre ce que la modification a été faite.
Pour résumer, si vous préférez le python de la philosophie, rendez-vous pour les suggestions des autres postes. Si vous préférer le java-comme la philosophie, de créer un Nib.py contenant de la classe de Plume.
la plume est fine. En cas de doute, reportez-vous à la Python guide de style.
À partir de la PEP 8:
Package et les Noms de Module Les Modules doivent avoir, à court, minuscule pour les noms. Souligne peuvent être utilisés dans le nom du module si elle améliore la lisibilité. Les paquets Python devrait ont aussi court, en minuscule pour les noms, bien que l'utilisation de traits de soulignement est découragés.
Depuis les noms de module sont mappés à des noms de fichiers, et certains systèmes de fichiers sont insensible à la casse et de tronquer les noms longs, il est important que le module les noms choisis pour être assez court -- ce ne sera pas un problème sur Unix, mais il peut être un problème lorsque le code est transporté à l'ancien Mac ou Les versions de Windows ou DOS.
Lorsqu'un module d'extension écrite en C ou C++ a un accompagnement Python module qui fournit un niveau supérieur (par exemple, plus orienté objet) l'interface, le C/C++ module a un trait de soulignement (par exemple _socket).