Why this works
class A():
   def __init__(self):
       self.B = self.__B__()
    
   class __B__():
       def __init__(self):
           pass
       def speak(self):
           print("Hi, I'm B")
            
   def speak(self):
       print("Hi, I'm A")
And this works:
class A():
    def __init__(self):
        super(A, self).__init__()
            
    def speak(self):
        print("Hi, I'm A")
But this doesn't?
class A():
    def __init__(self):
        super(A,self).__init__()
        self.B = self.__B__()
    
    class __B__():
        def __init__(self):
            super(__B__,self).__init__()
        def speak(self):
            print("Hi, I'm B")
            
    def speak(self):
        print("Hi, I'm A")
And I get the message that __B__ does not exists. Also, what does super(ClassName,self).__init__() do and why should/shouldn't use it?
