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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
meneliel
User
Beiträge: 256
Registriert: Montag 25. Juni 2007, 08:35
Kontaktdaten:

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

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:

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
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Was hast du vor?
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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