'position of super().__init__() gives different output

I was trying to understand this example working.

class P: 
   def __init__(self): 
      self.__x=100 
      self.y=200 
   def print(self): 
      print(self.__x, self.y)  
class C(P): 
   def __init__(self):
      super().__init__()  <-------------------
      self.__x=300 
      self.y=400
       
        
d = C() 
d.print()

output: 100 400

class P: 
   def __init__(self): 
      self.__x=100 
      self.y=200 
   def print(self): 
      print(self.__x, self.y)  
class C(P): 
   def __init__(self):      
      self.__x=300 
      self.y=400
      super().__init__()   <--------------------
       
        
d = C() 
d.print()

output: 100 200

Can someone explain the execution flow of the above codes leading to separate outputs?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source