J'ai un module dont le but est de définir une classe appelée "nib". (et quelques classes connexes aussi.) Comment dois-je appeler le module lui-même? "plume"? "nibmodule"? Rien d'autre?
J'ai un module dont le but est de définir une classe appelée "nib". (et quelques classes connexes aussi.) Comment dois-je appeler le module lui-même? "plume"? "nibmodule"? Rien d'autre?
Réponses:
Juste plume. Nommez la classe Nib, avec un N. majuscule. Pour en savoir plus sur les conventions de dénomination et d'autres conseils de style, consultez PEP 8 , le guide de style Python.
Client
, et naturellement j'en ferais souvent des instances que je veux appeler client
. Mais selon votre convention, le nom du module serait client
, et donc je devrais toujours nommer mes instances quelque chose de non naturel comme client_instance
. Que pensez-vous de ce problème?
Client
, alors il entrerait en conflit avec le nom de la classe Client
. Puisqu'il n'y a que 3 variantes de dénomination possibles ( client
, Client
ou CLIENT
), il y aura toujours un conflit entre deux des instances, classes, modules ou constantes. Je pense qu'il y a moins de fois que vous nommez votre module de la même manière qu'une instance ou une constante que la classe, et c'est donc la meilleure convention de dénomination des autres possibilités. Cela rendra également l'importation à partir de modules plus lisible puisque vous importez généralement des classes et des constantes plutôt que des variables.
Je l'appellerais nib.py. Et je nommerais aussi la classe Nib.
Dans un projet python plus vaste sur lequel je travaille, nous avons de nombreux modules définissant essentiellement une classe importante. Les classes sont nommées en commençant par une majuscule. Les modules sont nommés comme la classe en minuscules. Cela conduit à des importations comme les suivantes:
from nib import Nib
from foo import Foo
from spam.eggs import Eggs, FriedEggs
C'est un peu comme émuler la méthode Java. Une classe par fichier. Mais avec la flexibilité supplémentaire, que vous pouvez toujours ajouter une autre classe à un seul fichier si cela a du sens.
Je sais que ma solution n'est pas très populaire du point de vue pythonique, mais je préfère utiliser l'approche Java d'un module-> une classe, avec le module nommé comme classe. Je comprends la raison du style python, mais je n'aime pas trop avoir un très gros fichier contenant beaucoup de classes. J'ai du mal à parcourir, 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 selon lesquelles votre validation modifie des fichiers spécifiques (impliquant donc des classes spécifiques). À la place, vous voyez une modification du fichier du 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, optez pour les suggestions des autres articles. Si vous préférez plutôt la philosophie java, créez un Nib.py contenant la classe Nib.
spyder
ou un éditeur similaire pour voir un résumé de vos classes pour faciliter la navigation, et deux volets avec le même fichier s'ouvrent sur les deux. Veuillez également lire PEP8. Python est pour écrire Python et Java pour Java, mais Python n'est pas pour écrire Java.
la plume est bien. En cas de doute, reportez-vous au guide de style Python.
À partir de PEP 8 :
Noms de packages et de modules Les modules doivent avoir des noms courts, entièrement en minuscules. Des traits de soulignement peuvent être utilisés dans le nom du module si cela améliore la lisibilité. Les packages Python doivent également avoir des noms courts, entièrement en minuscules, bien que l'utilisation de traits de soulignement soit déconseillée.
Puisque les noms de module sont mappés aux noms de fichiers, et que certains systèmes de fichiers sont insensibles à la casse et tronquent les noms longs, il est important que les noms de module soient choisis pour être assez courts - ce ne sera pas un problème sous Unix, mais cela 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 ++ a un module Python d'accompagnement qui fournit une interface de niveau supérieur (par exemple plus orientée objet), le module C / C ++ a un trait de soulignement (par exemple _socket).
À partir de PEP-8: noms des packages et des modules :
Les modules doivent avoir des noms courts, entièrement en minuscules. Des traits de soulignement peuvent être utilisés dans le nom du module si cela améliore la lisibilité.
Les packages Python doivent également avoir des noms courts, entièrement en minuscules, bien que l'utilisation de traits de soulignement soit déconseillée.
Lorsqu'un module d'extension écrit en C ou C ++ a un module Python d'accompagnement qui fournit une interface de niveau supérieur (par exemple plus orientée objet), le module C / C ++ a un trait de soulignement (par exemple _socket).
Le module foo en python serait l'équivalent d'un fichier de classe Foo en Java
ou
module foobar en python serait l'équivalent d'un fichier de classe FooBar en Java