Yes, An object in the memory can be pointed by any number of reference variables as shown in the below example.
example: class Student: def __init__(self): self.name = "Ramu" self.age = 34 self.color = "White" #creating object of class Student and reference variable s_1. s_1 = Student() print() print(s_1.name) print() print(s_1.age) print() print(s_1.color) print() #Creating another reference variable. s_2 = s_1 print() print(s_2.name) print() print(s_2.age) print() print(s_2.color) print() #Creating another reference variable. s_3 = s_1 print() print(s_3.name) print() print(s_3.age) print() print(s_3.color) print() #check whether s_2 is pointing at the same memory location where #s_1 is pointing. print(s_2 is s_1) #True print() print(id(s_2) == id(s_1)) #True
Output: Ramu 34 White Ramu 34 White Ramu 34 White True True
In the above example, you can see we are creating the reference variable “s_1” that contains the address(memory location) of an object of the “Student” class. We are now assigning a value of s_1 to s_2 (s_2 = s_1) as we know the assignment operator works from right to left, which means the value of s_1 is copied to value s_2. similarly, s_3 to s_1. So when we are assigning s_2 to s_1, in this case, the Python memory manager will not create any new object in the memory rather than it will point to the same location. The below diagram will give a better understanding.
Contributed by – Devanshu Kumar
Contribute your article – firstname.lastname@example.org