Instanzen einer bestimmten Klasse

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
pytino
User
Beiträge: 11
Registriert: Montag 18. Februar 2008, 14:06
Wohnort: Winterthur

Hallo zusammen

Ich habe mehrere Objekte von Klassen angelegt und möchte jetzt herausfinden welche Instanzen zu einer bestimmten Klasse gehören.

Ich hoffe jemand hat mir da einen Tipp.

Gruss aus der Schweiz

Tino
BlackJack

Das ginge über das `__class__`-Attribut, aber warum möchtest Du das denn wissen?
pytino
User
Beiträge: 11
Registriert: Montag 18. Februar 2008, 14:06
Wohnort: Winterthur

Hallo BlackJack

Hmm, da muss ich ja schon eine Instanz angeben...
Instanz.__class__ oder?
Ich möchte aber gerne alle Instanzen einer bestimmten Klasse herausfinden.

Ich hoffe du verstehst mein anliegen.

Gruss

Tino
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

du musst in der klasse buch führen welche instanzen erstellt worden sind.
von haus aus geht das nicht. (natürlich geht das irgendwie, aber auf gruseligste art+weis)
http://www.kinderpornos.info
BlackJack

Und es ist immer noch die Frage nach dem "warum" offen. Alle Exemplare möchte man in der Regel ja auch gar nicht haben, sondern nur eine bestimmte Gruppe. Und die sollte man sich halt explizit irgendwo merken.
pytino
User
Beiträge: 11
Registriert: Montag 18. Februar 2008, 14:06
Wohnort: Winterthur

@BlackJack: habe mal darüber nachgedacht. In Java gibt es ja sogenannte Reflections. Da habe ich gedacht wie/ob das in Python funktionieren könnte.

@Dill: Wei währe das zu implementieren?
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

du machst dir eine liste als klassenattribut und hängst in __init__ self (die instanz) an die liste an. mit reflections geht das auch in python, aber warum sollte man das tun? wie das implementiert wird kann ich dir nicht sagen.
http://www.kinderpornos.info
BlackJack

@pytino: Ich glaube nicht, dass das in Java eine gute Idee ist, denn auch dort gibt es AFAIK keine Verbindung von Klassen zu Exemplaren, d.h. auch dort müsste man sich *alle* Exemplare anschauen, die in der VM existieren, und die herausfiltern, welche von einem bestimmten Typ sind. Das ist höchst ineffizient.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Erstens heißt das Ding in Java Reflection und zweitens könnte man das in Python mit Metaklassen und Weakrefs relativ elegant lösen. Ich stimme aber BlackJack zu, dass das eigentlich eher eine Spielerei denn eine gültige Lösung für ein reales Problem ist.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Sucht pytino nicht einfach nur `isinstance(my_object, MyClass)`?

Stefan
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

nein, siehe 3. beitrag. :idea:
http://www.kinderpornos.info
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Auch so. Überlesen. Dann nur so viel: 15 Jahre OO-Erfahrung haben gezeigt, dass die Frage nach einer Möglichkeit, alle Exemplare einer Klasse aufzählen zu wollen, eigentlich immer ein Indiz für ein schlechtes Design ist und man zunächst einmal die richtige Frage finden muss.

Stefan
Antworten