class Dog:
def __init__(self, ap1)
self.name = ap1
self.tricks = []
def.addTrick(self, ap1)
self.tricks.append(ap1)
Also oben habe ich eine Klasse, die dazu bestimmt ist, Instanzen von Hunden zu spawnen.Ist es möglich, auf eine Klasseninstanz zu verweisen, ohne die Variable zu verwenden, in der sie gespeichert ist?
curDog=Dog("Seymour")
curDog.addTrick("Wait Forever")
print("curDog is " + curDog.name)
print(curDog.name + " knows " + str(curDog.tricks))
print("")
curDog=Dog("Brian")
curDog.addTrick("Psuedo Intellectual Debate")
print("curDog is " + curDog.name)
print(curDog.name + " knows " + str(curDog.tricks))
print("")
Und hier oben habe ich zwei Instanzen, Dog('Seymour')
und Dog('Brian')
, die gleiche Variable curDog
(aktueller Hund) besetzt, seriell. Die Ausgabe sieht wie folgt aus:
>>> main()
curDog is Seymour
Seymour knows ['Wait Forever']
curDog is Brian
Brian knows ['Pseudo Intellectual Debate']
>>>
Offensichtlich Mir ist klar, dass, sobald curDog verwendet wird Brian zu speichern, dass sie nicht mehr Seymour verweisen wird. Aber an diesem Punkt frage ich mich, was mit Seymour passiert ist. Ist er noch draußen in der Umwelt Äther, nur von der variablen Verbindung getrennt? Oder ist er völlig ausgelöscht, um Platz für Brian zu machen?
Wenn der ehemalige, wie kann ich ihn und seine Trick-Liste zugreifen?
Mehr zu dem ursprünglichen Punkt des Beitrags, ist es möglich, Brian ohne Verwendung von curDog
zu verweisen? Ich habe versucht, wie print("Brian".tricks)
und print(Dog('Brian').tricks)
, aber ich war nicht sehr überrascht, wenn sie nicht funktionierten.
Gibt es eine Möglichkeit, dies zu tun? Gibt es eine bessere Möglichkeit Klasseninstanzen zu verstehen, die mir helfen könnten, dies selbst zu beantworten?
Sobald keine Referenzen auf ein Objekt mehr vorhanden sind, wird es für die Garbage-Collection freigegeben - an einem unbestimmten Punkt in der Zukunft wird es im Speicher mit etwas anderem überschrieben. Wenn Sie Zugriff auf mehrere Instanzen behalten möchten, legen Sie sie in ein Wörterbuch oder eine Liste. – jonrsharpe
Der Begriff, den Sie suchen, ist "Garbage Collection". Es wurde viel darüber geschrieben. Zum Beispiel: http://arctrix.com/nas/python/gc/ –