Edit: Please note that I used the wrong term "property" here. Instead I used a class variable ("field" in other programming languages).
If I set a class (or static) property of a class via an instance of that class, the property of this instance references the newly set object, but the class or other instances reference the object that was set on the class level:
class ClassPropertyDemo:
some_value = 42
cpd_1 = ClassPropertyDemo()
cpd_2 = ClassPropertyDemo()
# Set some_value via the second instance
cpd_2.some_value = 21
print(ClassPropertyDemo.some_value) # 42 - The value of the class property
print(cpd_1.some_value) # 42 - The value of the class property
print(cpd_2.some_value) # 21 - The value set to the property of the class instance
My question is what actually happens here. Is cpd_2.some_value
a new instance property, dynamically created, that hides the class property?