ableiten von object

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
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?
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

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. :)
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

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
tr
User
Beiträge: 6
Registriert: Freitag 18. Juni 2004, 15:36

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?
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

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
Antworten