When you assign an attribute in python, it doesn't matter where that attribute might already be defined, the new assignment is always applied to the object assigned to. When you say
>>> f1.a=5
The object that has the attribute here is the instance, so it's the instance that gets the new value.