Question: If the same object is invoked multiple times in python, will the memory location always be the same when I print 'self'?

Answer: 
AFAIK, memory addresses in Cpython are - by design - static. The memory address of an object can be seen with `id()`. The name of the function is a tell-tale of the fact it doesn't change...

See however the comment below, where other SO users pointed out that `id()` being the memory address is a detail implementation of Cpython.

HTH!
As **mac** noticed, *memory addresses in Cpython are - by design - static*

But even on Cpython you can't relay on this if you are using some c extensions.
Some of them can move objects and manually drive garbage collector.  

And if you are using other Python implementations, as **PyPy**, you are certain not guaranteed that the objects memory location always be the same, and high probably the will move.