As a follow up to this question
Why can I change the global value of x.a within def A? I am guessing it has to do with the fact that it is a class since it would not work with a regular variable because it would be redefined in the local scope of def A, but I am not quite understanding what is happening.
Case 1
class X:    
    def __init__(self):
        self.a = 1
        self.b = 2
        self.c = 3
class Y:        
    def A(self):        
        print(x.a,x.b,x.c)
        x.a = 4           
x = X()
y = Y()
y.A()
print(x.a,x.b,x.c)
 
     
     
     
    