Do celów logowania chcę pobrać w pełni kwalifikowaną nazwę klasy obiektu Python. (Z pełną kwalifikacją mam na myśli nazwę klasy, w tym nazwę pakietu i modułu).
Wiem o:
x.__class__.__name__
ale czy istnieje prosta metoda uzyskania pakietu i modułu?
1 odpowiedź
#! /usr/bin/env python
import xyz
def fullname(o):
module = o.__class__.__module__
if module is None or module == str.__class__.__module__:
return o.__class__.__name__ # Avoid reporting __builtin__
else:
return module + '.' + o.__class__.__name__
abc = xyz.Abc()
print fullname(abc)
oraz Abc zdefiniowane jako:
class Abc(object):
def __init__(self, v=42):
self.val = v
output:
$ ./prog.py
xyz.Abc