Hallo zusammen
Die BeanFactory aus Spring (oder wie es sie auch bei verschiedenen EJB Frameworks vorhanden ist) scheint mir sehr interessant. Vorallem aus dem Grund, dass ich angeben kann, welcher Service welche Klasse verwenden soll und dies ohne eine Zeile Code!
Gibt es sowas für Python?
Merci vielmals =)
BeanFactory für Python
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
Glaub nicht, sowas ist in Python ja auch ziemlich trivial zu lösen. Python ist kein Java trifft es da glaube ich ganz gut.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Definiere "Service" so, dass Leute die EJB nicht kennen auch verstehen was du dir eigentlich wünscht. Mich würde auch interessieren wie du die Zuordnung angibst ohne eine Zeile Code zu schreiben (Klicken in einer GUI? Gedankenlesen über JTCS*?).DatenMetzgerX hat geschrieben:Die BeanFactory aus Spring (oder wie es sie auch bei verschiedenen EJB Frameworks vorhanden ist) scheint mir sehr interessant. Vorallem aus dem Grund, dass ich angeben kann, welcher Service welche Klasse verwenden soll und dies ohne eine Zeile Code!
* Java Thought Control Standard
Meines Wissens nicht. DI und IoC sind in einer dynamischen Programmiersprache nur sehr begrenzt sinnvoll. Es ist hier ja genauso einfach eine Programmdatei zu ändern wie eine XML-Datei.DatenMetzgerX hat geschrieben:Gibt es sowas für Python?
Ich hatte vor einigen Wochen ~10 Zeilen Python-Code gepostet, die einem Spring-Context entsprechen, doch ich finde das gerade einfach nicht wieder. Man kann sich das jedenfalls so einfach selbst bauen, dass es da wenig Grund für ein großes Rahmenwerk a la Spring gibt.
Stefan
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
Hier ist der Nutzen, wie auch was es ist, beschrieben
http://springpython.webfactional.com/re ... jects.html
Werde mir nun mal den IoC Teil vom Spring python ansehen, scheint das gewünschte zu sein =)
Dankschön euch allen.
http://springpython.webfactional.com/re ... jects.html
Werde mir nun mal den IoC Teil vom Spring python ansehen, scheint das gewünschte zu sein =)
Dankschön euch allen.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Also ich sehe da eine recht umständliche API zur Lösung eines Problemes, dass ich in Python gar nicht sehe. Achja, und natürlich ein Haufen XML dazu.
Kannst du mal so ein Python-Beispiel bringen, wo man DI bräuchte und wo das nicht mit Bordmitteln machbar ist?
Kannst du mal so ein Python-Beispiel bringen, wo man DI bräuchte und wo das nicht mit Bordmitteln machbar ist?
Mein erster Gedanke? Ohgottohgottohgott.
Das XML-Beispiel in 2.2.1:
Wäre in Python:
Und das Überfliegen des Artikels hat mich nicht überzeugt, dass der XML-Schrott einen Vorteil gegenüber dem kleinen Abschnitt Python-Code ist.
Will man es deklarativ machen, kann man immer noch Python benutzen:
Die Implementierung von `Context` und `Ref` benötigt nur wenige Zeilen. Erst wenn man Springs Magie nutzen möchte, Objekte automatisch mit Exemplaren von Objekten basierend auf den Typen von setter-Methoden zu bestücken, müsste man mehr machen. Das hat sich aber zumindest bei unseren Spring-basierten Java-Projekten nicht bewährt und explizites Definieren aller Abhängigkeiten war letztlich verständlicher.
Ich empfehle auch noch einen Blick auf http://onestepback.org/articles/depinj/index.html und - auch wenn es um Ruby geht und nicht um Python - auf http://rubyconf2008.confreaks.com/recov ... prise.html (da gibt es übrigens noch ein Dutzend weitere empfehlenswerte Präsentationen, "The Ruby Code Review. A Play in Three Acts" war z.B. sehr amüsant und dennoch so wahr...)
Stefan
Das XML-Beispiel in 2.2.1:
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>
<objects xmlns="http://www.springframework.org/springpython/schema/objects"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/springpython/schema/objects
http://springpython.webfactional.com/schema/context/spring-python-context-1.0.xsd">
<object id="MovieLister" class="springpythontest.support.testSupportClasses.MovieLister" scope="prototype">
<property name="finder" ref="MovieFinder"/>
<property name="description"><ref object="SingletonString"/></property>
</object>
<object id="MovieFinder" class="springpythontest.support.testSupportClasses.ColonMovieFinder" scope="singleton">
<property name="filename"><value>support/movies1.txt</value></property>
</object>
<object id="SingletonString" class="springpythontest.support.testSupportClasses.StringHolder">
<property name="str" value="There should only be one copy of this string"></property>
</object>
</objects>
Code: Alles auswählen
from springpythontest.support.testSupportClasses import MovieLister, ColonMovieFinder
movieLister = MovieLister()
movieFinder = ColonMovieFinder()
movieLister.finder = movieFinder
movieLister.description = "There should... Fuck. No. Who cares?! Strings are immutable!"
movieFinder.filename = "support/movies1.txt"
Will man es deklarativ machen, kann man immer noch Python benutzen:
Code: Alles auswählen
context = Context(
'movieLister': {
'class': 'springpythontest.support.testSupportClasses.MovieLister',
'finder': Ref('movieFinder'),
'description': "...",
},
'movieFinder': {
'class': 'springpythontest.support.testSupportClasses.ColonMovieFinder',
'filename': "support/movies1.txt",
},
)
Ich empfehle auch noch einen Blick auf http://onestepback.org/articles/depinj/index.html und - auch wenn es um Ruby geht und nicht um Python - auf http://rubyconf2008.confreaks.com/recov ... prise.html (da gibt es übrigens noch ein Dutzend weitere empfehlenswerte Präsentationen, "The Ruby Code Review. A Play in Three Acts" war z.B. sehr amüsant und dennoch so wahr...)
Stefan
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich lade die grad runter (und hoffe auf etwas ähnliches wie den letzten Talk von Zed Shaw). Auch wenn das etwas Offtopic ist: kannst du da noch weitere empfehlen? Da gibt es mehrere mit tollen Titeln, aber das ist wie beim C3: einige Vorträge sind super, obwohl das Thema weniger interessant ist und einige Vorträge sind von komischen Leuten die ihre komischen Ideen pushen wollen.sma hat geschrieben:(da gibt es übrigens noch ein Dutzend weitere empfehlenswerte Präsentationen, "The Ruby Code Review. A Play in Three Acts" war z.B. sehr amüsant und dennoch so wahr...)
Zed Shaw's The ACL is Dead-Vortag war in der Tat super. Hier ein paar subjektive Empfehlungen: Matz's Keynote - langweilig. Dave Thomas Keynote - must see. Scott Shacon's Git-Vortrag: fand ich spannend. MacRuby - lieber den HotCocoa-Vortrag anschauen. MagLev - für mich als alten Smalltalk-Fan interessant. Jim Weirich und Thread - wie immer gut. Jim Weirich & Chris Nelson - Very, very funny. Guckbefehl. How Ruby Can Be Fast - wenn man sich für VM-Technik interessiert. Chris Nelson & Ruby in the Browser - interessant. Two Turntables And A Git Repo - Thema fand ich nicht so interessant, aber sehr guter unterhaltsamer Vortrag. Red Sun (Ruby on Flash) - bemerkenswertes Projekt, Vortragsstil könnte besser sein. Duby - interessantes Projekt. Forth - gucken, da man diese Sprache kennen sollte. Terminal.app - ich fand witzig, dass da der Entwickler dieser Mac-App mal 5min sein Programm lobt.