python - eine - Wie erhält man den konkreten Klassennamen als String?



data big (2)

Diese Frage hat hier bereits eine Antwort:

Ich möchte vermeiden, eine Menge von isinstance() Funktionen isinstance() , also suche ich nach einer Möglichkeit, den konkreten Klassennamen für eine Instanzvariable als String zu erhalten.

Irgendwelche Ideen?


Answer #1

Sie können auch ein Diktat mit den Klassen selbst als Schlüssel erstellen, nicht unbedingt die Klassennamen

typefunc={
    int:lambda x: x*2,
    str:lambda s:'(*(%s)*)'%s
}

def transform (param):
    print typefunc[type(param)](param)

transform (1)
>>> 2
transform ("hi")
>>> (*(hi)*)

Hier ist typefunc ein Dict, das für jeden Typ eine Funktion abbildet. transform ruft diese Funktion ab und wendet sie auf den Parameter an.

natürlich wäre es viel besser, "echte" OOP zu verwenden


Answer #2
 instance.__class__.__name__

Beispiel:

>>> class A():
    pass
>>> a = A()
>>> a.__class__.__name__
'A'




python