Frage zu Pythons OOP :)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

Beitragvon sape » Sonntag 31. Dezember 2006, 00:49

Huch, stimmt eigentlich. Bei solchen Sachen habe ich dann sowas gemacht in der Methode ``if self.filename != ''``. Aber die Methode mit None scheint mir die bessere Lösung. Naja, dann muss ich mal nun alles was so ist durch ``if self.filename is not None`` ersetzen.

Danke.

Und da es nun aktuell ist: Einen schönen rutsch ins neue Jahr wünsche ich euch allen :)

lg
sape
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Beitragvon EnTeQuAk » Sonntag 31. Dezember 2006, 10:07

Also ihr macht wohl gerne Nachtschichten ;)

Ansonsten finde ich das, das eine schöne Disskussion war/ist :)

Merke schon, hier gibt es einige verschiedene Ansichtsweisen und verwendungsweisen. --- wäre eigentlich auch schlimm, wenn nicht oder? :)


Also ich habe mir jetzt folgende Sachen gemerkt, was hier einige machen:

Methiode1:

Code: Alles auswählen

class Test:
    def __init__(self):
        self.test = self.get_test()

    def get_test(self):
        self.test = 'DADA'
        return self.test

Methode2:

Code: Alles auswählen

class Test:
    def __init__(self):
        self.test = self.get_test()

    def get_test(self):
        test = 'DADA'  ## zuweisung irgenteiner Art - ansonsten gleich in ''return'' rein
        return test

Methode3

Code: Alles auswählen

class Test:
    def __init__(self):
        self.test = '' # oder None
        self.get_test()

    def get_test(self):
        self.test = 'DADA'


Also ich bekenne mich jetzt einfach mal zur ersten oder zweiten :) kann mich da noch nicht so richtig entscheiden... :) --> zweitere könnte bei sehr großen Konstruktormethoden recht Lang und evtl. etwas unüberlichtlich werden - denke ich.

Eure Meinungen?

MfG EnTeQuAk
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Sonntag 31. Dezember 2006, 11:58

Die erste Methode ist natürlich quatsch, in der wird in get_test self.test = 'DADA' gesetzt, self.test zurückgegeben um dann in __init__ nochmal gleich 'DADA' gesetzt zu werden. Doppelt gesetzt, ergo: Unnütz.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Sonntag 31. Dezember 2006, 16:21

An dieser Stelle sei der Artikel Getters/Setters/Fuxors eingeworfen, ein *absolutes* Must-Read!
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Beitragvon EnTeQuAk » Sonntag 31. Dezember 2006, 16:30

sehr schöner Artikel.

Aber letzentlich ist das auch wieder ein klein wenig Geschmackssache.

Die einen Definieren sofort und weisen dann zu die andere weisen in der definition zu usw....


Danke! Danke! und einen guten Rutsch ins neue Jahr wünscht...

EnTeQuAk
BlackJack

Beitragvon BlackJack » Sonntag 31. Dezember 2006, 16:57

EnTeQuAk hat geschrieben:Die einen Definieren sofort und weisen dann zu die andere weisen in der definition zu usw....


Man weist *immer* in der Definition zu. Geht gar nicht anders da es Python keine (Typ)Deklarationen gibt.

Einen Namen an ein Objekt zu binden, nur um ein paar Zeilen später den gleichen Namen an das "richtige" Objekt zu binden, ist einfach unnötig. Welchen Typ man hinter dem Namen erwarten kann, steht ja hoffentlich schon ein paar Zeilen vorher in der Dokumentation.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder