Hallo.
Ich steh mal wieder aufm Schlauch.
Ist es mit möglich mit bottle Objekt Orientierte Anwendungen zu schreiben? Alle meine Versuche scheiterten. Nun wollt ich einfach mal nachfragen ob es überhaupt möglich ist, da ich auch nicht wirklich was zu diesem Thema gefunden habe.
Gruß, ds.
[bottle] Objektorientierte Programmierung
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
Natürlich ist es möglich, aber nicht so gedacht. Bottle ist auf kleine, flache, ein-datei-Applikationen ausgelegt.
Bottle: Micro Web Framework + Development Blog
Ok. Ich hätte mal noch nach einem Beispiel fragen sollen.
Hab mich ja ein bisschen in das MultiApp Design eingelesen und der Übersicht wegen würde ich da gerne das oop Modell anwenden wollen, denn wenn alles in einer Datei, dann soll es auch schön aussehen.
Hab mich ja ein bisschen in das MultiApp Design eingelesen und der Übersicht wegen würde ich da gerne das oop Modell anwenden wollen, denn wenn alles in einer Datei, dann soll es auch schön aussehen.
- daemonTutorials
- User
- Beiträge: 171
- Registriert: Sonntag 6. Februar 2011, 12:06
- Kontaktdaten:
//EDITDas ist an sich ganz einfach. Einfach von benötigten Klassen erben.
(Kein Bottle Freak, daher keine Garantie auf richtigkeit)Irgendwie so, also die erforderliche Klassen erben und entsprechend benutzen! Ist doch nicht so schwer, oder?Code: Alles auswählen
#!/usr/bin/env python class bottleExtend(class1,class2,class3) def __init__(): return class1 def helloWorld(): return class2.openURL("www.google.de") def openFrame(class2.openURL): testObject = class3.addFunction(openFrame)
habt recht, bringt nix über ein mir unbekanntes Thema den Mund fuselig zu reden!
Zuletzt geändert von daemonTutorials am Dienstag 8. Februar 2011, 17:31, insgesamt 1-mal geändert.
LG Maik
@daemonTutorials: Das ist nicht einmal syntaktisch korrektes Python. Wenn man keine Ahnung hat, muss man zu einem Thema ja auch nicht unbedingt etwas sagen.
Lies Dir den Beitrag von Defnull durch -- das ist der Autor von Bottle. Wenn der sagt, dass das nicht auf OOP ausgelegt ist, dann kann man das sicher nicht dadurch ändern, dass man irgendwie eine Klasse schreibt. OOP ist kein Selbstzweck und mehr als die ``class``-Anweisung zu hinzuschreiben. Das was man in die Klasse schreibt muss aus OOP-Sicht auch Sinn machen.
Lies Dir den Beitrag von Defnull durch -- das ist der Autor von Bottle. Wenn der sagt, dass das nicht auf OOP ausgelegt ist, dann kann man das sicher nicht dadurch ändern, dass man irgendwie eine Klasse schreibt. OOP ist kein Selbstzweck und mehr als die ``class``-Anweisung zu hinzuschreiben. Das was man in die Klasse schreibt muss aus OOP-Sicht auch Sinn machen.
Wenn objektorientiert und mit Klassen, dann würde ich auch den ganzen Schritt gehen, und das ganze Rahmenwerk aus wiederverwendbaren Komponenten zusammensetzen.
Vor zwei Jahren hatte ich mal einen "proof of principle" für einen Ansatz ähnlich wie Tapestry oder Wicket (und wahrscheinlich WebObjects, von dem sie alle abgucken, das ich aber (noch) nicht kenne) gebastelt:
Für jede Seite gibt es eine Klasse, die eine `create`-Methode hat, die eine Hierarchie von Komponenten (in meinem Fall ein `Label`) aufbaut. Assoziiert ist ein Template, in dem über Attribute in dem `web`-Namensraum Anweisungen enthalten sind, wie das XHTML manipuliert werden soll (in meinem Fall den Inhalt des `span` durch den `value` des `Label` ersetzen). Man könnte das Template natürlich auch von Platte laden.
Offenbar hatte ich das damals auf https://gist.github.com/106070 gestellt, sodass ich eigentlich gar nicht mehr viel sagen muss
Stefan
Vor zwei Jahren hatte ich mal einen "proof of principle" für einen Ansatz ähnlich wie Tapestry oder Wicket (und wahrscheinlich WebObjects, von dem sie alle abgucken, das ich aber (noch) nicht kenne) gebastelt:
Code: Alles auswählen
import web
class Hello(web.Page):
def create(self):
self.add(web.Label(id="message", value="Hello, World"))
def template(self):
return """<span web:id="message">...</span>"""
web.start(Hello)
Offenbar hatte ich das damals auf https://gist.github.com/106070 gestellt, sodass ich eigentlich gar nicht mehr viel sagen muss
Stefan