How come 1st and 3rd object heap address r coming same? !! Python programming doubt please help | Sololearn: Learn to code for FREE!
Новый курс! Каждый программист должен знать генеративный ИИ!
Попробуйте бесплатный урок
+ 1

How come 1st and 3rd object heap address r coming same? !! Python programming doubt please help

Class Test: def __init__(self,data): self.data = data print(self.data) obj = Test(5) print(obj) obj = Test(6) print(obj) obj = Test(7) print(obj)

4th Jul 2020, 7:43 PM
Parth Lashkari
Parth Lashkari - avatar
4 ответов
+ 6
https://stackoverflow.com/questions/40514829 Read example 3 about Alternating Memory Allocation
4th Jul 2020, 7:57 PM
Aymane Boukrouh
Aymane Boukrouh - avatar
+ 5
Martin Taylor there can be more than 2 Test() objects with different memory heaps, they just can't have the same variable name
4th Jul 2020, 8:24 PM
Aymane Boukrouh
Aymane Boukrouh - avatar
+ 4
Because, when you re-assigned 'obj' to 'Test(6)', the initial value of 'obj' that is Test(5) was dropped and thus the memory location was freed. So python re-used the location when you assigned 'obj' to Test(7). Try adding another line to the code obj = Test(8) print(obj) You will find that this is the same location as the second one. This is because python re-uses memory that has been previously used. The reason the memory location is alternating and not continuous is because when you re-assign, the memory location is still in use and freed after the assigning. So it is used when you re-assign a second time.
4th Jul 2020, 7:59 PM
XXX
XXX - avatar
0
# A single node of a singly linked list class Node: # constructor def __init__(self, data = None, next=None): self.data = data self.next = next # A Linked List class with a single head node class LinkedList: def __init__(self): self.head = None # insertion method for the linked list def insert(self, data): newNode = Node(data) if(self.head): current = self.head while(current.next): current = current.next current.next = newNode else: self.head = newNode # print method for the linked list def printLL(self): current = self.head while(current): print(current.data) current = current.next # Singly Linked List with insertion and print methods LL = LinkedList() LL.insert(3) LL.insert(4) LL.insert(5) LL.printLL() Then how come in insert method newNode object's heap address is not coming alternatively on each insertion method call.
4th Jul 2020, 8:21 PM
Parth Lashkari
Parth Lashkari - avatar