In the __init__
function of a class I initialize some variables in order to make them available throughout my class and other classes.
These variables are given a value at a later stage in a function of a different class. But whenever they are set their identity changes. Since I have been passing around the references to these variables I don't want their identity to change.
I have already tried copy.copy()
and copy.deepcopy()
, but this also changes the identity of the variables.
The code below describes the situation in a simple way:
class MyObject:
def __init__(self):
self.name = 'test_object'
def set_name(self, name):
self.name = name
class MyClass:
def __init__(self):
self.my_object = MyObject()
def create_object():
new_object = MyObject()
new_object.set_name('new_object')
print(f'Address of new object in function: {id(new_object)}')
return new_object
if __name__ == '__main__':
my_class = MyClass()
print(f'Identity when variable has only be initialized: {id(my_class.my_object)}')
my_class.my_object = create_object()
print(f'Identity after the create has been called: {id(my_class.my_object)}')
The code above produces the following output:
Identity when variable has only be initialized: 87379952
Address of new object in function: 87425104
Identity after the create has been called: 87425104
What I would like to have is that the identity of my_class.my_object
stays the same and does not change to the identity of the object created in the function. Would someone know how to achieve this?