2014-12-20 2 views
5

Ho un modulo denominato 'mymod' che definisce una classe denominata MyClass.Ottieni il nome alias di una classe importata

class MyClass: 
    def __init__ (self): 
     pass 

Dal modulo principale, questa classe viene importata come Imp_MyClass e viene creato un oggetto.

from mymod import MyClass as Imp_MyClass 
o = Imp_MyClass() 

Per stampare il nome della classe da questo oggetto, usiamo

print o.__class__.__name__ 

che 'MyClass' stampe. Cosa devo fare per stampare il suo nome alias, vale a dire. 'Imp_MyClass'?

risposta

5

Non esiste alcun modo per stampare il nome alias. Molti nomi possono fare riferimento alla stessa classe. Le classi in Python sono solo valori come le altre e possono essere assegnate ai nomi arbitrariamente. La tua dichiarazione di importazione è solo un compito.

E 'come chiedere, come faccio a trovare il nome dell'oggetto in questo scenario:

a = b = c = MyClass() 
d = a 

Quale nome è "il vero" nome? Tutto di a, b, c e d si riferiscono all'oggetto, nessun nome è più giusto di qualsiasi altro.

Nel codice si può fare:

nome
from mymod import MyClass as Imp_MyClass 
AlsoMyClass = Imp_MyClass 
AnotherOne = AlsoMyClass 
o = AlsoMyClass() 
o2 = AnotherOne() 

Quale classe è "giusto"?

0

Sono d'accordo con @ niti di commenti, ma per il vostro scopo, è possibile creare facilmente una nuova classe sottoclasse Imp_MyClass, che sarebbe (quasi) identica alla classe originale, per quasi tutti gli scopi:

from mymod import MyClass 

class Imp_MyClass(MyClass): 
    pass 

o = Imp_MyClass()