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!
Note that, beeing a very high-level language, Python does not define "memory addresses" for objects. Objects do however have an "identity" that can be queried using the [built-in `id()` function](http://docs.python.org/library/functions.html#id). This identity is guaranteed not to change during an object's lifetime:

> 
> Return the “identity” of an object. This is an integer (or long integer) which is guaranteed to be unique and constant for this object during its lifetime. Two objects with non-overlapping lifetimes may have the same id() value.
> 
> 
> 

In CPython, this identity is the underlying memory address, but this is merely an implementation detail; it might be different in other implementations and may even change in future versions of CPython (although this is unlikely).