Супер внутри классов в Python 3 - PullRequest
0 голосов
/ 12 июля 2020

Почему это работает

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")

И это работает:

class A():
    def __init__(self):
        super(A, self).__init__()
            
    def speak(self):
        print("Hi, I'm A")

Но это не так?

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")

И я получаю сообщение, что __B__ не существует. Кроме того, что делает super(ClassName,self).__init__() и почему следует / не следует его использовать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...