Alle:
%Vor% Nun möchte ich eine Liste von Objekt 1
getaggt bekommen, was [a, b, c]
ist. Wie könnte ich das tun?
BTW, wie nennt man die Variable "a" hier offiziell? Ich weiß bis jetzt, es ist ein "Objekt-Tag" für das Objekt, aber ich habe keine Ahnung, was ist der Begriff davon.
Danke!
warum brauche ich das:
%Vor%in einer anderen Sprache wie C, a, b, c sollte 2 sein, wenn ich a = 2 neu ordne, aber in Python gibt es keine solche Sache wie Referenz, also ist der einzige Weg, den Wert von abc zu ändern a = b = c = 2 so weit ich weiß, deshalb soll alles Bezug auf ein Objekt genommen werden.
Was Sie fragen, ist nicht sehr praktisch und nicht möglich. Hier ist eine verrückte Art, es zu tun:
%Vor% Ich möchte hier einige Fehlinformationen klären. Das hat eigentlich nichts damit zu tun, dass "Ints unveränderlich" sind. Wenn Sie a = 2
schreiben, weisen Sie a
und a
einem anderen Element zu - dies hat keine Auswirkungen auf b
und c
.
Wenn Sie eine Eigenschaft von a
jedoch ändern würden, dann würde dies bewirken b
und c
. Hoffentlich illustriert dieses Beispiel besser, worüber ich spreche:
Ich denke, Sie könnten sich für objgraph
interessieren. Sie können das Objektdiagramm im Speicher durchlaufen oder ein PNG
des Objektdiagramms ausgeben. Es ist nützlich zum Debugging von Speicherlecks.
Siehe diese Seite: Ссылка
Es ist nicht möglich, alle Verweise auf ein bestimmtes Objekt in Python zu finden. Es ist nicht einmal möglich, alle Objekte oder alle Referenzen in Python zu finden. (Die CPython-Funktion gc.get_objects
tut dies, aber sie ist in Python-Implementierungen nicht portierbar.)
Sie können dir()
oder locals()
verwenden, um alle Variablen zu finden, die in einem Bereich des Programms existieren. Aber wenn Objekte an anderen Stellen definiert wurden, könnten Sie sie mit dieser Methode vermissen.
Zuerst in C, "=" ist eine Wertzuweisung und erstellt keine Referenz. Genauer gesagt, wenn Sie a = b = 1 schreiben, geschieht dies.
(1) b = 1 wird ausgewertet, weist 1 zu b zu und gibt dann 1 zurück, so dass der Ausdruck a = 1
wird(2) a = 1 wird ausgewertet, ordnet 1 zu b zu und gibt dann 1 zurück, das nicht verwendet wird.
Dann ändert sich a = 1 nur wie erwartet.
In Python sind Dinge etwas komplizierter, da jede Variable eine Referenz ist, aber sie behandelt Zahlen anders, weil sie unveränderlich sind. Kurz gesagt, wenn Sie a = 1 und b = 1 schreiben, dann ist a ist b gibt True zurück. Aber das Ändern eines wird das andere nicht ändern.
Dies geschieht jedoch nicht mit Objekten, bei denen eine Referenz wie erwartet funktioniert. Wenn Sie also das tun wollen, was Sie beschreiben, sollten Sie vielleicht ein neues Objekt definieren, das den gewünschten Wert enthält, und dieses einer Variablen zuweisen.
Sieh dir Pyjack an. Die Funktion replace_all_refs scheint ziemlich gut zu funktionieren, um alle Referenzen auf ein Objekt zu ersetzen. Hinweis: Funktioniert nicht gut mit String-Objekten.