108 votes

Comment dois-je organiser le code source Python?

Je suis débuter avec Python (il est grand temps que je lui donne un coup), et je suis à la recherche des meilleures pratiques.

Mon premier projet est une file d'attente qui s'exécute en ligne de commande expériences dans plusieurs threads. Je commence à avoir une très longue main.py le fichier, et je tiens à le briser. En général, je suis à la recherche de: Comment faire de python pour les programmeurs organiser plusieurs fichiers source? Est-il une structure particulière qui fonctionne pour vous?

Mes questions spécifiques incluent:

  1. Doit chaque classe d'être dans un fichier séparé?
  2. Comment dois-je organiser les tests unitaires par rapport au code source?
  3. Où dois-je mettre de la doc commentaires, en particulier ceux destinés aux opérations en ligne de commande?
  4. Si j'utilise plusieurs répertoires, comment puis-je importer les classes entre elles?

Je peux probablement attirer certains de mes propres conclusions ici par essais et erreurs, mais je préfère commencer à partir de quelque chose de bon.

35voto

Drew Noakes Points 69288

L' article d'Eric pointu est génial parce qu'il couvre les détails de l'organisation de grandes bases de code Python.

Si vous avez atterri ici, à partir de Google et essaient de trouver comment diviser un grand fichier source en plusieurs, plus faciles à gérer des fichiers, je vais résumer le processus brièvement.

Supposons que vous avez actuellement tout dans un fichier appelé" main.py:

  • Créer une autre source de fichier dans le même dossier (appelons nôtre utils.py pour cet exemple)
  • Déplacer quelque soit les classes, les fonctions, les instructions, etc vous avez besoin d' main.py en utils.py
  • En main.py ajouter une seule ligne en haut: import utils

Conceptuellement ce qu'il fait est de créer un nouveau module appelé utils dans un autre fichier source. Vous pouvez ensuite importer partout où c'est nécessaire.

8voto

AutomatedTester Points 14713

La façon dont vous organisez votre code et des tests est exactement le même que vous le feriez pour n'importe quel langage OO.

Les réponses de la façon dont je le fais. Il peut ne pas être droit, mais fonctionne pour moi

  1. Dépend de la façon dont votre fonctionnalité est divisé. Pour mon python application j'ai 1 fichier avec des classes pour les points d'entrée et les paquets de mèches différentes fonctionnalités
  2. J'utilise PyDev pour eclipse et de les organiser comme je le ferais pour Java.
>  Workspace
>     |
>     |-Src
>     |   |-Package1
>     |   |-Package2
>     |   |-main.py
>     |-Test
>         |-TestPackage1
>         |-TestPackage2
  1. Utilisation DocString partout pour garder une trace de tout
  2. Après s'être assuré que l' __init__.py fichiers dans les dossiers. c'est juste un cas simple d' from module import class

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X