2014-12-20 13 views
5

Ich habe ein Modul namens 'mymod', das eine Klasse namens MyClass definiert.Aliasnamen einer importierten Klasse erhalten

Vom Hauptmodul wird diese Klasse als Imp_MyClass importiert und ein Objekt wird erstellt.

from mymod import MyClass as Imp_MyClass 
o = Imp_MyClass() 

Um den Namen der Klasse von diesem Objekt zu drucken, verwenden wir

print o.__class__.__name__ 

welche druckt 'MyClass'. Was soll ich tun, um seinen Alias-Namen zu drucken, nämlich "Imp_MyClass"?

Antwort

5

Es ist nicht möglich, den Aliasnamen zu drucken. Viele Namen können sich auf dieselbe Klasse beziehen. Klassen in Python sind nur Werte wie alle anderen, und sie können Namen willkürlich zugewiesen werden. Ihre Importanweisung ist nur eine Aufgabe.

Es ist als würde man fragen, wie kann ich den Namen des Objekts in diesem Szenario finden:

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

Welcher Name ist „die richtige“ Name? Alle von a, b, c und d beziehen sich auf das Objekt, kein Name ist richtiger als jeder andere.

In Ihrem Code können Sie tun:

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

Welche Klassenname "rechts" ist?

0

Ich stimme @ Neds Kommentare, aber für Ihren Zweck, können Sie einfach eine neue Klasse erstellen Imp_MyClass von Subklassen, die (fast) identisch mit der ursprünglichen Klasse sein würde, für fast alle Zwecke:

from mymod import MyClass 

class Imp_MyClass(MyClass): 
    pass 

o = Imp_MyClass() 
Verwandte Themen