Puh, das weiß ich nicht. Das kann ich ncoh nicht beurteilen weil mir die entsprechende Erfahrung fehlt.
Aber mal ganz im vertrauen: BlackJacks Code haben zu 99% Hand und Fuss Der weis __GANZ__ genau was er da Treibt
lg
Dictionary- Konstruktor
-
- User
- Beiträge: 312
- Registriert: Dienstag 24. Oktober 2006, 19:31
XtraNine hat geschrieben:Puh, das weiß ich nicht. Das kann ich ncoh nicht beurteilen weil mir die entsprechende Erfahrung fehlt.
Aber mal ganz im vertrauen: BlackJacks Code haben zu 99% Hand und Fuss Der weis __GANZ__ genau was er da Treibt
lg
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Wieso? In vielen Fällen ruft man in der überschriebenen Methode die entsprechende Methode der Elternklasse auf. In diesem Fall ist es aber sinnvoller, da effizienter, eine andere Methode der Elternklasse zu verwenden.rolgal_reloaded hat geschrieben:Inzwischen frage ich mich, ob es bei aller Eleganz die der Code von BlackJack hat, stilistisch nicht etwas seltsam ist eine Methode der Elternklasse mittels einer anderen Methode der Elternklasse zu überschreiben.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Warum sollte sowas seltsam sein? Eine Kindklasse erweitert die Elternklasse ja und kann dabei doch durchaus auf Dinge zurückgreifen die die Elternklasse schon bietet - warum das Rad noch einmal erfinden? Dass eine von dict abgeleitete Klasse die Funktion iteritems() bietet, davon ist auszugehen - es wäre seltsam Dinge in der Kindklasse zu löschen.rolgal_reloaded hat geschrieben:Inzwischen frage ich mich, ob es bei aller Eleganz die der Code von BlackJack hat, stilistisch nicht etwas seltsam ist eine Methode der Elternklasse mittels einer anderen Methode der Elternklasse zu überschreiben.
Stellt euch vor, die Elternklasse macht etwas sehr flexibel und für den Benutzer dieser Klasse unpraktisch. Gehen wir mal vom Beispiel einer Klasse zur Versionsverwaltung aus:
Code: Alles auswählen
class HighlyFlexibleVCS(object):
def update(self):
# Code um den Checkout zu aktualisieren
pass
def pull(self):
# Code um den aktuellen Code aus einem entfernten Repository zu holen
pass
def commit(self):
# Code um etwas einzuchecken
pass
def push(self):
# Code um den aktualisierten Code an ein entferntes Repository zu schicken
pass
class SimplifiedVCS(HighlyFlexibleVCS):
def download(self):
self.pull()
self.push()
def upload(self):
self.commit()
self.push()
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Die Liste oder der Iterator werden als Argument an `sorted()` übergeben. Wichtig ist was *diese* Funktion zurückgibt. Nämlich eine sortierte Liste mit den Elementen des "iterable", das als Argument übergeben wurde.rolgal_reloaded hat geschrieben:Wenn man damit im Interpreter rumspielt bekommt man aber folgendes:
Ich meine: wenn ich mit iterkeys() in deinem Code der Klasse MyDict dasselbe bekomme wie mit meiner ListcomprehensionCode: Alles auswählen
>>> d = {"Italien":"Rom","Spanien":"Madrid","Belgien":"Brüssel","Frankreich":"Paris"} >>> d.items() [('Spanien', 'Madrid'), ('Italien', 'Rom'), ('Frankreich', 'Paris'), ('Belgien', 'Br\xfcssel')] >>> d.keys() ['Spanien', 'Italien', 'Frankreich', 'Belgien'] >>> d.iterkeys() <dictionary-keyiterator object at 0x01553D60>
, dann müsste ich doch in der oben gezeigten interaktiven Sitzung auch mehr rausbekommen als einen schönen Gruß übern InterpreterCode: Alles auswählen
def keys(self): return sorted([key for key in self])
Code: Alles auswählen
In [1]: d = {"Italien":"Rom","Spanien":"Madrid","Belgien":"Brüssel","Frankreich":"Paris"}
In [2]: d.iterkeys()
Out[2]: <dictionary-keyiterator object at 0xb7951300>
In [3]: sorted(d.iterkeys())
Out[3]: ['Belgien', 'Frankreich', 'Italien', 'Spanien']
-
- User
- Beiträge: 312
- Registriert: Dienstag 24. Oktober 2006, 19:31
@Leonidas, @Blackjack,
wunderbar eure Antworten, leuchtet mir alles ein.
LG
rolgal_reloaded
wunderbar eure Antworten, leuchtet mir alles ein.
LG
rolgal_reloaded