[bottle] Objektorientierte Programmierung

Django, Flask, Bottle, WSGI, CGI…
Antworten
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

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.
Benutzeravatar
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
Benutzeravatar
lynadge
User
Beiträge: 112
Registriert: Sonntag 4. April 2010, 10:17

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.
Benutzeravatar
daemonTutorials
User
Beiträge: 171
Registriert: Sonntag 6. Februar 2011, 12:06
Kontaktdaten:

Das ist an sich ganz einfach. Einfach von benötigten Klassen erben.
(Kein Bottle Freak, daher keine Garantie auf richtigkeit)

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)
Irgendwie so, also die erforderliche Klassen erben und entsprechend benutzen! Ist doch nicht so schwer, oder?
//EDIT
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
BlackJack

@daemonTutorials: Das ist nicht einmal syntaktisch korrektes Python. Wenn man keine Ahnung hat, muss man zu einem Thema ja auch nicht unbedingt etwas sagen. :roll:

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.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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:

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)
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
Antworten