Ενότητα 7 - Τμήμα 1 - Κλάσεις

7.1.5 - Αναφορές

Ρίξτε μια ματιά στον παρακάτω κώδικα.

class Person(): def __init__(self): self.name = "" self.money = 0 bob = Person() bob.name = "Bob" bob.money = 100 nancy = Person() nancy.name = "Nancy" print(bob.name, "has", bob.money, "euros.") print(nancy.name, "has", nancy.money, "dollars.")


Για να οπτικοποιήσετε τον κώδικα πατήστε στον σύνδεσμο για να μεταφερθείτε στο http://www.pythontutor.com

Ο Παραπάνω κώδικας δεν εμπεριέχει κάτι νέο, ο παρακάτω όμως έχει μία διαφορά:

class Person(): def __init__(self): self.name = "" self.money = 0 bob = Person() bob.name = "Bob" bob.money = 100 nancy = bob nancy.name = "Nancy" print(bob.name, "has", bob.money, "euros.") print(nancy.name, "has", nancy.money, "euros.")


Για να οπτικοποιήσετε τον κώδικα πατήστε στον σύνδεσμο για να μεταφερθείτε στο http://www.pythontutor.com

Η διαφορά στο pythontutor είναι στη γραμμά 10. Η nancy είναι μία αναφορά στο bob. Εκτός από αναφορά, μπορούμε να αποκαλέσουμε και διεύθυνση μνήμης , δείκτη, ή  χειρισμό. Μία αναφορά δείχνει σε μία διεύθυνση στη μνήμη του υπολογιστή στην οποία έχει αποθηκευτεί το αντικείμενο. Η διεύθυνση αυτή είναι ένας δεκαεξαδικός αριθμός, ο οποίος αν τυπωθεί μπορεί να είναι κάτι σαν 0x1e504. Όταν εκτελείτε ο κώδικας, γίνεται αντιγραφή της διεύθυνσης αντί να γίνει αντιγραφή του αντικειμένου που η διεύθυνση μνήμης περιέχει.

reference address