Seite 1 von 1

ableiten von object

Verfasst: Freitag 18. Juni 2004, 16:03
von Gast
Hallo,

wenn man eine klasse definiert, soll man dann von "object" ableiten?
Was sind die vorteile?

Mir ist aufgefallen, dass mein programm, das viele objekte erstellt und diese in sets speichert, 12 statt 9 sekunden braucht, wenn von object ableitet wird.
Wenn ich anstatt eigenen objekten eine liste verwende, braucht das programm ca. 8 sekunden.

An was liegt das, mach ich was falsch mit meinen objekten?

Verfasst: Freitag 18. Juni 2004, 16:33
von Milan
Hi. Wenn du von object ableitest, programmierst du new-style classes. Diese sind ganz anders aufgebaut und anders designt. Hier findest du eine kleine Einführung dazu, lies die dir erstmal durch. :)

Verfasst: Freitag 18. Juni 2004, 16:38
von Dookie
Hi auch,

zu 'von "objekt" ableiten' hat dir ja Milan schon einen Link gegeben.

Bei Sets muss, beim Einfügen neuer Objekte, immer verglichen werden, ob ein gleichwertiges Objekt schon in dem Set enthalten ist. Bei einer Liste ist das egal, da kann sogar ein und das selbe Objekt mehrfach darin vorkommen. Darum ist die Liste immer schneller als ein Set.
Wie schnell Objekte in Sets gespeichert haben liegt dann auch an der effizienz des "==" Operators bzw der Implementierung von __cmp__.


Gruß

Dookie

Verfasst: Freitag 18. Juni 2004, 16:58
von tr
Danke für die schnellen Antworten, an das mit den sets habe ich nicht gedacht, das erklärt natürlich den geschwindigkeitsunterschied.

Ich nehme an, dass es länger dauert new-style instanzen zu vergleichen als old-style objekte?

Verfasst: Freitag 18. Juni 2004, 18:13
von Dookie
das kommt, wie gesagt darauf an, wie effizient __eq__ bzw __cmp__ implementiert sind und insbesondere der Zugriff auf die zu vergleichenden Attribute der Instanzen.


Gruß

Dookie