2016-07-26 5 views
0

Wenn ich diese Python-Skript hatte:Finden Sie den Namen einer Instanz einer Klasse aus der Klasse

class my_class(object): 

    def __init__(self): 
     pass 

    def get_name(self): 
     return [name of self] 


this_is_the_name_im_looking_for = my_class() 

print ('the name is: ' + this_is_the_name_im_looking_for.get_name()) 

Was würde ich [Name des Selbst] mit ersetzen, um die Funktion zu haben, get_name um 'this_is_the_name_im_looking_for' zurückzugeben?

Ich brauche das, weil ich ein Python-Modul zu schaffen und will zurück zu füttern, die Instanz dieser Klasse sind sie

+3

Eine einzelne Instanz der Klasse auf mehrere Variable gebunden sein kann Namen: 'this_name = Meine_Klasse(); other_name = this_name; this_name ist other_name == True' –

+0

@ali_m Ich begründe die Frage mit der Annahme, dass dies nicht der Fall ist, aber das ist trotzdem ein hilfreicher Kommentar. –

+1

Oder es könnte keinen Namen haben: 'mylist.append (my_class ()) '. –

Antwort

0

Die integrierte Python-Methode idreturns

eine ganze Zahl mit der ist garantiert einzigartig und konstant für dieses Objekt während seiner Lebensdauer.

Dies gibt nicht den 'Namen' des Objekts per se zurück, aber es ermöglicht Ihnen, zwischen verschiedenen Instanzen der Klasse zu unterscheiden. Dies löst auch das Problem mehrere Zeiger, die auf das gleiche Objekt, da die ID mit dem zugrunde liegenden Objekt (die Adresse des Objekts im Speicher) zugeordnet ist:

val1 = 1 
val2 = val1 
id(val1) == id(val2) 
# returns: True 
id(val1) == id(1) 
# returns: True 
id(val1) == id(2) 
# returns: False 
+0

Ich denke, er will 'get_name (val1)! = Get_name (val2)'. – quartata

+2

Seien Sie vorsichtig mit Int mit ID als Beispiele, Sie erhalten überraschende Ergebnisse. ID (100 * 1000) ist nicht dasselbe wie ID (1000 * 100), aber die int übergebene ID ist der Wert Wert. –

Verwandte Themen