50 votes

Cadre d'injection de dépendances en Python

Existe-t-il un cadre équivalent à Guice ( http://code.google.com/p/google-guice ) pour Python ?

24voto

gregturn Points 989

Python de printemps est un dérivé de Spring Framework et Spring Security, basés sur Java, destiné à Python. Ce projet contient actuellement les fonctionnalités suivantes :

  • Inversion de contrôle (injection de dépendances) - utiliser soit le XML classique, soit le décorateur python @Object (similaire au sous-projet Spring JavaConfig) pour relier les choses entre elles. Bien que le format @Object ne soit pas identique au style Guice (câblage centralisé contre câblage des informations dans chaque classe), il s'agit d'un moyen précieux de câbler votre application python.
  • Programmation orientée aspects - appliquer des intercepteurs dans un paradigme de programmation horizontale (au lieu de l'héritage vertical de la POO) pour des choses comme les transactions, la sécurité et la mise en cache.
  • DatabaseTemplate - La lecture de la base de données nécessite un cycle monotone d'ouverture de curseurs, de lecture de lignes et de fermeture de curseurs, ainsi que des gestionnaires d'exceptions. Avec cette classe modèle, tout ce dont vous avez besoin est la requête SQL et la fonction de traitement des lignes. Spring Python s'occupe du reste.
  • Transactions de base de données - Le fait d'envelopper plusieurs appels de base de données avec des transactions peut rendre votre code difficile à lire. Ce module fournit plusieurs façons de définir des transactions sans rendre les choses compliquées.
  • Sécurité - Intercepteurs de sécurité des plugins pour verrouiller l'accès à vos méthodes, en utilisant à la fois l'authentification et l'autorisation de domaine.
  • Remoting - Il est facile de convertir votre application locale en une application distribuée. Si vous avez déjà construit vos éléments client et serveur à l'aide du conteneur IoC, le passage de local à distribué n'est qu'un changement de configuration.
  • Exemples - pour aider à démontrer les différentes fonctionnalités de Spring Python, quelques exemples d'applications ont été créés :
    • PetClinic - L'exemple d'application web de Spring Framework a été reconstruit à partir de zéro en utilisant des conteneurs web python, notamment : CherryPy . Allez-y pour voir un exemple d'utilisation de ce framework. (NOTE : D'autres frameworks web python seront ajoutés à cette liste dans le futur).
    • Spring Wiki - Les wikis sont des moyens puissants de stocker et de gérer du contenu, nous en avons donc créé un simple comme démo !
    • Spring Bot - Utilisez Spring Python pour construire un petit robot pour gérer le canal IRC de votre projet open source.

11 votes

Il est utile de mentionner que SpringPython fait pas supporte Python 3, et il n'a pas vu d'activité depuis 2014...

18voto

J'aime ce cadre simple et soigné.

http://pypi.python.org/pypi/injector/

L'injection de dépendances en tant que modèle formel est moins utile en Python que que dans d'autres langages, principalement en raison de la prise en charge des arguments par mot-clé la facilité avec laquelle les objets peuvent être simulés, et sa nature dynamique. dynamique.

Cela dit, un cadre d'assistance à ce processus peut supprimer beaucoup de beaucoup d'éléments de base dans les grandes applications. C'est là que Injector peut peut aider. Il fournit automatiquement et de manière transitive les arguments des mots-clés avec leurs valeurs. Comme avantage supplémentaire, Injector encourage un code joliment compartimenté par l'utilisation de modules.

Tout en s'inspirant de Guice, il ne reproduit pas servilement son L'API. Fournir une API Pythonique est plus important que la fidélité.

14voto

Matthew Trevor Points 5277

Je ne l'ai pas utilisé, mais le Python de printemps est basé sur Spring et implémente Inversion du contrôle .

Il semble également y avoir un projet Guice in Python : serpent-guide

10voto

user35818 Points 91

Comme alternative au monkeypatching, j'aime DI. Un projet naissant tel que http://code.google.com/p/snake-guice/ peut faire l'affaire.

Ou voir l'article du blog Injection de dépendances en Python par Dennis Kempin (août 2008).

6voto

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