Variable Changes If I Change A Different Variable
Whenever I create an instance of a class, create a variable that's assigned that first instance, and use an attribute of the class on the second variable my first variable changes.
Solution 1:
@juanpa.arrivillaga provided good comments to your question. I just want to add how to fix your code to do what you expect it to do:
Method 1:
classnumber:def__init__(self, value):
self.value = value
defadd(self):
self.value = self.value + 1
a = number(10)
b = number(a.value) # create a new object with the same value as 'a'
b.add()
a.value
Method 2:
import copy
classnumber:def__init__(self, value):
self.value = value
defadd(self):
self.value = self.value + 1
a = number(10)
b = copy.copy(a) # make a shallow copy of the object a # b = copy.deepcopy(a) # <-- that is what most people think of a "real" copy
b.add()
a.value
Solution 2:
Because when you do b = a
you're not creating a new object of the class number
just passing the reference of the object which a
references.
Post a Comment for "Variable Changes If I Change A Different Variable"