Python Doku: von list / dict erben...

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.
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 30. Juli 2008, 13:07

Und? Wo steht denn sonst so ein Beispiel?

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 30. Juli 2008, 14:49

jens hat geschrieben:Und? Wo steht denn sonst so ein Beispiel?
Python Tutorial, jedes Python-Buch.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 30. Juli 2008, 14:53

Eingangs hatte ich gefragt, ob jemand eine Webseite nennen kann wo sowas steht. Brauchbare Treffer gab es nicht.
Also hab ich das mal kurz und knapp in's Wiki geschrieben. Das war nun falsch? :roll:

...motiviert mich jetzt tierisch, mehr im Wiki zu schreiben...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 30. Juli 2008, 15:08

jens hat geschrieben:Eingangs hatte ich gefragt, ob jemand eine Webseite nennen kann wo sowas steht. Brauchbare Treffer gab es nicht.
9. Classes zählt nicht?
jens hat geschrieben:...motiviert mich jetzt tierisch, mehr im Wiki zu schreiben...
Naja, es geht ja nicht darum dass du etwas geschrieben hast, das ist ja schön und gut, sondern dass du etwas geschrieben hast was nicht notwendig war. Stattdessen hättest du etwa [wiki]Module[/wiki] oder [wiki]Neue Features[/wiki] um Punkte, Beschreibungen und Absätze erweitern können.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 30. Juli 2008, 15:12

Leonidas hat geschrieben:9. Classes zählt nicht?
Das ist ehr allgemein über vererben. Schön und gut, aber es erklärt IMHO nicht so einfach, wie ich von list oder dict Sinnvoll erben kann. Ein Blick auf die Beispiele die ich in's Wiki gestellt habe tun genau das.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Mittwoch 30. Juli 2008, 15:16

jens hat geschrieben:Schön und gut, aber es erklärt IMHO nicht so einfach, wie ich von list oder dict Sinnvoll erben kann.
Das erklärt wie man Vererbt, von belibigen Objekten, und eine Transferleistung von ``object`` zu ``list`` traue ich den meisten Leuten zu. Und es erklärt auch, dass man in Kind-Klassen Funktionen überschreibt, so wie in deinem Beispiel. Und mehr bieten deine Beispiele ja auch nicht, oder?
My god, it's full of CARs! | Leonidasvoice vs Modvoice
meneliel
User
Beiträge: 256
Registriert: Montag 25. Juni 2007, 08:35
Kontaktdaten:

Donnerstag 31. Juli 2008, 07:19

Jetzt schimpft doch nicht mit dem Jens. :)
Ich finds gut. Ein paar anschauliche Beispiele mehr.
lunar

Donnerstag 31. Juli 2008, 07:35

mitsuhiko hat geschrieben:War die Wiki-Seite jetzt wirklich nötig? Ist doch irgendwie Basiswissen über Vererbung oder?
Naja, offenbar eben nicht ... ;)

Andererseits frage ich mich gerade, ob es angebracht ist, aus jens' Wissen um absolute OOP-Grundlagen auf die Code-Qualität seines CMS-Projekts zu schließen ...
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Donnerstag 31. Juli 2008, 07:48

Meine €0.02: Ich finde Jens Anliegen eigentlich toll: Die wiki-Seiten sind ja nicht als Ersatzdoku gedacht, sondern dazu Leuten mit konkreten Problemen Antworten zu bieten. Solche Probleme haben Anfänger. Dieses Stadium mag bei manchem hier schon länger her sein, aber es ist doch gut, wenn sich jemand darum Gedanken macht.

Die Qualität der wiki-Seiten stimmt in euren Augen nicht? Es fehlen Links (z. B. auf die Classes-Doku)? Es ist ein wiki! Ich bin sicher, Jens nimmt es niemanden übel, wenn ein Verweis auf die offziziöse Doku eingefügt würde, oder?

Gruß,
Christian
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 19. Dezember 2008, 15:03

Noch eine Frage zum Thema von dict erben. Geht das auch anders:

Code: Alles auswählen

class Foo(dict):
    def new(self, new_data):
        self.clear()
        self.update(new_data)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
DasIch
User
Beiträge: 2450
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Freitag 19. Dezember 2008, 15:16

Was hast du vor?
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 19. Dezember 2008, 15:46

Na, das dict soll von außen neu gesetzt werden, aber es soll ja bei meiner eigenen Klasse bleiben.

Noch ein Beispiel:

Code: Alles auswählen

class MeinDict(dict):
    def new(self, new_data):
        self.clear()
        self.update(new_data)

d = MeinDict({1:"foo"})
print d       # -> {1: 'foo'}
# neu setzten
d.new({2:"bar"})
print d       # -> {2: 'bar'}
print type(d) # -> <class '__main__.MeinDict'>

# so geht's natürlich nicht:
d = {2:"bar"}
print type(d) # -> <type 'dict'>
Dabei geht es mir jetzt nicht darum, das ich nicht d = {2:"bar"} machen kann, sondern nur, das MeinDict.new() mir umständlich erscheint.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
DasIch
User
Beiträge: 2450
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Freitag 19. Dezember 2008, 15:51

Ich würde copy überschreiben, wenn __init__ dasselbe Verhalten wie bei einem normalen dict aufweist geht:

Code: Alles auswählen

class Foo(dict):
    def copy(self):
        return self.__class__(self)
Kein großer unterschied aber imho vernünftiger.
Antworten