Aber mal ganz im vertrauen: BlackJacks Code haben zu 99% Hand und Fuss


lg
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 FussDer weis __GANZ__ genau was er da Treibt
lg
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.
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.
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()
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']