Uzyskanie w pełni kwalifikowanej nazwy klasy obiektu w Pythonie

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

Twoja odpowiedź

Zaloguj się aby odpowiedzieć.

Operiada

Operiada to polskojęzyczne forum informatyczne działające na zasadzie pytań i odpowiedzi.

Obserwowane tagi

Zaloguj się aby obserwować tagi.