Come posso ottenere il nome della classe compreso il percorso completo dalla sua radice del modulo? Per Python 3.3 e versioni successive?Ottieni il nome completo di una classe Python (Python 3.3+)
Ecco esempio di codice Python:
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()
Questo codice mi uscite su Python 3.3:
__main__
C
<__main__.A.B.C object at 0x0000000002A47278>
Quindi, Python sa internamente che il mio oggetto è __main__.A.B.C
, ma come posso ottenere questo di programmazione? Posso analizzare repr(self)
, ma suona come un hack per me.
Eventuali duplicati di http://stackoverflow.com/questions/1401661/python-list-all-base-classes-in-a -hierarchy-of-given-class si prega di guardare lì per informazioni di utilizzo tramite l'attributo '__bases__' e' inspect'module l'ordine di risoluzione dei metodi ('mro') è anche informazioni interessanti oltre alla" visualizzazione "della catena di ereditarietà formale. Poiché questa regola quale metodo (nel caso in cui siano offerti multipli) sarà scelto come una gerarchia efficace. – Dilettant
Controllare l'attributo ['__qualname__'] (https://docs.python.org/3/whatsnew/3.3.html#pep-3155-qualified-name-for-classes-and-functions). –