Seite 2 von 2

Verfasst: Mittwoch 30. Juli 2008, 15:16
von Leonidas
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?

Verfasst: Donnerstag 31. Juli 2008, 07:19
von meneliel
Jetzt schimpft doch nicht mit dem Jens. :)
Ich finds gut. Ein paar anschauliche Beispiele mehr.

Verfasst: Donnerstag 31. Juli 2008, 07:35
von 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 ...

Verfasst: Donnerstag 31. Juli 2008, 07:48
von CM
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

Verfasst: Freitag 19. Dezember 2008, 15:03
von jens
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)

Verfasst: Freitag 19. Dezember 2008, 15:16
von DasIch
Was hast du vor?

Verfasst: Freitag 19. Dezember 2008, 15:46
von jens
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.

Verfasst: Freitag 19. Dezember 2008, 15:51
von DasIch
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.