Verfasst: Freitag 10. November 2006, 10:38
Zum Thema "private-Mechanismus" geht weiter unter: http://www.python-forum.de/topic-7790.html
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Hier kann ich nicht die Datenstruktur ändern. Das ganze basisiert darauf dass alles in die Liste gepusht wird, und danach die liste nach der Zeit (die sich jeweils auf Index 0 befindet) sortiert wird. Wenn ich nun ein dict machen würde dann würde es nur nach den Key sortiert und daher unbrauchbar. Hab das getestet und daher mache ich das so => [[], [], []]Zeile 154: self._data[0][0], [0][0] sieht sehr nichtssagend aus, vielleicht kann an hier eine andere Datenstruktur verwenden? Zum Beipiel ein Dict, mit einer Listen innen drin, oder sowas ähnliches?
Code: Alles auswählen
def print_ranking(self):
"""Diese Methode zeigt das Ranking an stdout an."""
if not self.ranking:
raise NoValueError("Das Attribut ranking von %s enthaelt keine"
" Daten!\n"
"Folgende Methode/Funktion hat die"
" Exception ausgeloest: %s"
% (self, self.print_ranking)
)
Code: Alles auswählen
def print_ranking(self):
"""Diese Methode zeigt das Ranking an stdout an."""
if not self.ranking:
raise ValueError(
"Keine Daten vorhanden,"
" da Benchmark noch nicht ausgeführt wurde!"
)
Code: Alles auswählen
a = 0
bench = Benchmark()
bench.add_function(a, "LC", loops)
[…]
Code: Alles auswählen
self._functions.append([ref.__name__, comment, ref, args])
AttributeError: 'int' object has no attribute '__name__'
Code: Alles auswählen
if str(type(ref)) != "<type 'function'>":
raise WrongArgumentError("Das uebergeben Argument an ref ist "
"keine Referenz auf eine Funktion!")
Code: Alles auswählen
a = 0
bench = Benchmark()
bench.add_function(a, "LC", loops)
[…]
Code: Alles auswählen
raise WrongArgumentError("Das uebergeben Argument an ref ist "
__main__.WrongArgumentError: Das uebergeben Argument an ref ist keine Referenz auf eine Funktion!
Es ist nicht garantiert das die Zeichenkette vom Funktionstyp immer so aussieht und Du verhinderst damit das etwas anderes als Funktionen übergeben wird. Methoden werden zurückgewiesen und auch Objekte die `__call__()` implementieren. Beides unnötige Einschränkungen. Versuchs mal mit:XtraNine hat geschrieben:So, nun implementiere ich in add_function eine Überprüfung:Code: Alles auswählen
if str(type(ref)) != "<type 'function'>": raise WrongArgumentError("Das uebergeben Argument an ref ist " "keine Referenz auf eine Funktion!")
Code: Alles auswählen
if not callable(ref):
raise TypeError('ref is not callable')
Code: Alles auswählen
self._functions.append([ref.__name__, comment, ref, args])
AttributeError: 'int' object has no attribute '__name__'