Klassenattribute einer unbekannten Klasse

26/07/2008 - 14:39 von Mario M. Mueller | Report spam
Hallo,

wenn ich eine "unbekannte" Klasse habe, gibt es eine Möglichkeit, die in der
Klasse definierten Attribute - und dabei meine ich nur die Variablen -
einfach als Liste zu erhalten?

klasse.__class__.__dict__ enthàlt ja auch noch die Funktionen, die man mit
callable rauswerfen müsste. Übrig bleiben Sachen wie __module__ und __doc__

Gibt es etwas "fertiges"?

Gruß, Mario

PS: Minimalbeispiel:

class a:
b = 0
def __init__(self):
self.c = 1

Ich hàtte gern ["b",] als Ergebnis meiner Anfrage.
 

Lesen sie die antworten

#1 Stefan Behnel
27/07/2008 - 11:08 | Warnen spam
Mario M. Mueller schrieb:
wenn ich eine "unbekannte" Klasse habe, gibt es eine Möglichkeit, die in der
Klasse definierten Attribute - und dabei meine ich nur die Variablen -
einfach als Liste zu erhalten?



Da es in Python keinen wesentlichen Unterschied zwischen Attributen, Methoden
und Attributen zugewiesenen Funktionen gibt, macht eine "allgemeine" Lösung
hier wenig Sinn. Selbst das Vorhandensein von Deskriptoren (wie sie für
Methoden verwendet werden) macht hier keinen wesentlichen Unterschied, da sie
neben Methodenaufrufen auch für etliche andere Dinge genutzt werden können,
z.B. Properties. Möchtest du die dann in deiner Liste mit drin haben oder nicht?

Überhaupt reicht es meistens nicht aus, die Namen zu kennen, die die Klasse
definiert, da Instanzen jederzeit bei oder nach der Initialisierung neue
Attribute setzen können.

Am Besten fàhrst du also mit einer maßgeschneiderten Lösung, die genau in
deinem Fall das findet, was du als Konvention für deine Klassen festlegst.
Oder vielleicht findet sich ja noch eine ganz andere Lösung um dein
eigentliches Ziel zu erreichen, das du bisher noch nicht beschrieben hast.

Stefan

Ähnliche fragen