Wie kann ich den Namen der Klasse einschließlich des vollständigen Pfads von der Modulwurzel erhalten? Für Python 3.3 und höher?Erhalte den vollständig qualifizierten Namen einer Python-Klasse (Python 3.3+)
Hier ist Beispiel für Python-Code:
class A:
class B:
class C:
def me(self):
print(self.__module__)
print(type(self).__name__)
print(repr(self))
x = A.B.C()
x.me()
Dieser Code gibt mir auf Python 3.3:
__main__
C
<__main__.A.B.C object at 0x0000000002A47278>
also intern Python weiß, dass mein Objekt ist __main__.A.B.C
, aber wie kann ich das bekommen programmatisch? Ich kann repr(self)
analysieren, aber es klingt wie ein Hack für mich.
Mögliche Duplikat http://stackoverflow.com/questions/1401661/python-list-all-base-classes-in-a -hierarchy-of-given-class Bitte schauen Sie dort nach Verwendungsinformationen über das '__bases__' Attribut und' inspect'Modul Angebote Die Methodenauflösungsreihenfolge ('mro') ist neben der formalen Vererbungskette" display "auch eine interessante Information. Da diese Regeln festlegen, welche Methode (falls mehrere angeboten werden) als eine effektive Hierarchie ausgewählt wird. – Dilettant
Überprüfen Sie das Attribut ['__qualname__'] (https://docs.python.org/3/whatsnew/3.3.html#pep-3155-qualified-name-for-classes-and-functions). –