Объяснить Слово Python наследует родительский класс _

1. Первый вопрос:

  Мы знаем, что класс может наследовать от других классов, в процессе наследования, мы не только наследуем метод родительского класса также может наследовать свойства родительского класса, вы также можете добавить свой собственный материал на основе родительского класса.

 

2. Второй вопрос:

  Мы наследуем свойства и методы родительского класса времени без того свойства и методы родительского класса писать вообще. Метод обычно используется: название методов родительского класса / свойства, существует способ дальнейшего супер () метод. Но на самом деле эти два метода является что-то другое.

  Во-первых, первый путь, например: имя метода родительского класса / свойства.

  Код:

класс BaseClass: 
    num_Base_calls = 0 
    Защита call_me (Я): 
        печать ( " Вызов методы на BaseClass " ) 
        self.num_Base_calls + = 1 

класс LeftSubclass (BaseClass): 
    num_left_calls = 0 
    четкость call_me (Я): 
        BaseClass.call_me (сам) 
        печати ( " Вызов метода на LeftSubclass " ) 
        self.num_left_calls + = 1 

класс RightSubclass (BaseClass): 
    num_Right_calls = 0
    Защиту call_me (Я): 
        BaseClass.call_me (само) 
        печать ( " Вызов метода на RightSubclass " ) 
        self.num_Right_calls + = 1 

класс Подкласс (LeftSubclass, RightSubclass): 
    num_Sub_calls = 0 
    Защиту call_me (Я): 
        LeftSubclass.call_me (Я) 
        RightSubclass.call_me (само) 
        печать ( " Вызов метода на Подкласс " ) 
        self.num_Sub_calls + = 1 

с = Подкласс () 
s.call_me () 
 
# метод вызова на BaseClass
# метод вызова на LeftSubclass
# Вызов метода на BaseClass 
# метод на RightSubclass Вызов 
# метод на Подкласс Вызов 

печати (s.num_Sub_calls) 
печати (s.num_left_calls) 
печати (s.num_Right_calls) 
печати (s.num_Base_calls) 

# 1 
# 1 
# 1 
# 2

  Примечание 1: Существует такой базовый класс называется BaseClass, чтобы наследовать Leftclass и Rightclass, затем Leftclass и Rightclass соответственно наследование подкласса. Есть такая простая связь.

  Примечание 2: Проблема заключается в том, когда последний Подкласс выполнена, мы обнаружили Call_me самого основной метод базового класса выполняются в два раза?

  Примечание 3: Для множественного наследования, чтобы помнить о том, что мы хотим, чтобы следующий уровень метода класса вызова, а не «родительский» подход. На самом деле, следующий метод не может принадлежать к классу родительского класса или более ранних предков.

  4. ОПИСАНИЕ указанная точка является более известно об этой модели показано на фиг:

  подкласс - ищет --Leftclass-- ищет --Baseclass: первый проход: печать BaseClass и Leftclass

  подкласс - глядь - Rightclass - глядь - BaseClass: второй раз: Печать: BaseClass и Rightclass

  подкласс - собственный - подкласс печати

  Примечание 5: На самом деле, мы на самом деле в процессе правопреемства, в конце концов, мы просто хотим еще раз, чтобы найти родителей родительского класса (исходный класс предок), таким образом, это не приемлемо. Таким образом, мы ввели функцию супер (), чтобы посмотреть блок только один раз.

  

  Во-вторых: Мы используем супер () метод только, чтобы найти его снова предок класс следующим образом:

класс BaseClass: 
    num_Base_calls = 0 
    Защита call_me (Я): 
        печать ( " Вызов методы на BaseClass " ) 
        self.num_Base_calls + = 1 

класс LeftSubclass (BaseClass): 
    num_left_calls = 0 
    Защита call_me (Я): 
        . супер () call_me () для 
        печати ( " Вызов метода на LeftSubclass " ) 
        self.num_left_calls + = 1 

класс RightSubclass (BaseClass): 
    num_Right_calls = 0  
    защиту call_me (Я):
        . супер () call_me () 
        печать ( " Вызов метода на RightSubclass " ) 
        self.num_Right_calls + = 1 

класс Подкласс (LeftSubclass, RightSubclass): 
    num_Sub_calls = 0 
    Защиту call_me (Я): 
        . супер () call_me () 
        печать ( " Вызов Способ по Подкласс " ) 
        self.num_Sub_calls + = 1 

х = Подкласс () 
s.call_me () 

# метод вызова на BaseClass 
# метод вызова на RightSubclass 
# метод вызова на LeftSubclass
# Метод вызова на Подкласс
 
печати (s.num_Sub_calls) 
печати (s.num_left_calls)
печать (s.num_Right_calls) 
печать (s.num_Base_calls) 

# 1 
# 1 
# 1 
# 1

  Примечание 1: Мы добавили супер в каждом классе в каждой подкатегории () таким образом, чтобы решить эту проблему.

  Примечание 2: Таким образом, порядок поиска будет выглядеть следующим образом:

  подкласс - Найти - leftclass и rightclass - содержат - BaseClass: Print: basecalss, правый подкласс, leftclass, подкласс

 

3. Краткое описание:

  Первый способ заключается в использовании бинарного пути режима, идти снова, идите снова возвращается обратно.

  Второй способ заключается в использовании содержащейся способ, как шелушение лук, слой за слоем пилинга, без каких-либо подобных оговорок.

  

 

рекомендация

отwww.cnblogs.com/noah0532/p/10958282.html