Рубрики
Без рубрики

Метод, переопределение против перегрузки в Python [+ Видео]

Метод, переопределение против перегрузки в Python — Какая разница? Если вы короткие вовремя — здесь это: перегрузка метода: создание метода, которое можно вызывать с различными аргументами, такими как M () и m (1, 2, 3). Перекрытие метода: перезаписи функциональность метода, определенного в родительском классе. При перегрузке метода, методы в данном классе … Метод, переопределение против перегрузки в Python [+ видео] Подробнее »

Автор оригинала: Chris.

Метод, переопределение против перегрузки в Python – в чем разница? Если вы короткие вовремя – вот это:

  • Метод перегрузки : Создание метода, которое можно назвать с различными аргументами, такими как м () и м (1, 2, 3) Отказ
  • Метод, переопределение : перезаписать функциональность метода, определенного в родительском классе.

В Метод перегрузки Методы в данном классе имеют одно и то же имя, но разные подписи (= Списки аргументов ). В Метод, переопределение Методы имеют одинаковое имя и же подписи, а методы класса детей переопределяют методы родительских классов.

Следующее видео объясняет эту статью более подробно:

Метод перегрузки

Метод перегрузки : Создание метода, которое можно назвать с разными аргументами.

Вот пример для перегрузки метода:

# Method overloading in Python

class Wizard:

    def __init__(self, mana):
        self.mana = mana

    def stupor(self, other, damage=50):
        if self.mana>100:
            other.mana -= damage


tom = Wizard(112)
dumbledore = Wizard(151)

# duell
tom.stupor(dumbledore)
dumbledore.stupor(tom, 200)
for i in range(10):
    tom.stupor(dumbledore)

# Tom Mana:
print(tom.mana)

# Dumbledore Mana:
print(dumbledore.mana)

Упражнение : Что такое выход этого кода?

Мастер класса определяет Атрибут экземпляра «Мана» это представляет уровень энергии соответствующего Волшебник экземпляр. Если уровень маны осушен, они больше не могут сделать волшебные трюки.

Волшебный хитрость уменьшает уровень маны противника (под названием «Другое), если называемый экземпляром имеет достаточно маны.

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

Таким образом, вы «Перегрузка» определение метода. Он выполняет разные вещи, когда они называются по-разному.

Это продемонстрировано на выходе головоломки. Скажем, волшебник Том борется против волшебника Дамблдора. Том поражает первым. Он уменьшает уровень маны на 50 баллов (ущерб по умолчанию «Ущерб», когда он не определяется явно). Дамблдор ударяет назад, уменьшая уровень маны Тома на 200 очков в одном ударе. На данный момент Tom Tox имеет -88 MANA ушел, поэтому независимо от того, как часто он пытается повредить Дамблдор – это не меняет.

Это результат головоломки кода:

-88
101

Переопределение метода

Метод, переопределение : перезаписывать функциональность метода, определенного в родительский класс Отказ

Вот пример для переопределения метода:

# Method overriding in Python

class Muggle:

    def convince(self, other, thing):
        print("Please, " + other + ", " + thing) 

class Wizard(Muggle):

    def convince(self, other, thing):
        print("Imperius {" + other + ", " + thing + "}")


petunia = Muggle()
harry = Wizard()

petunia.convince("Harry", "clean up")
harry.convince("Dudley", "clean up")

Упражнение : Какова производительность этого кода головоломки?

Мы используем пример Гарри Поттера. Класс Маггл является родительским классом класса Волшебник (Указано определением класса мастера Мастер (маггл) ).

Поэтому Волшебник Класс наследует все методы и атрибуты из Маггл Родительский класс – включая метод убедить Отказ

Тем не менее, а Волшебник Есть ли другие средства, чтобы убедить кого-то что-то сделать. Таким образом, мы Переопределить убедить () Метод в детском классе. По сути, мы заменяем функциональность новыми функциями, которая более конкретна для дочернего класса.

Когда Wizard Harry выполняет метод Swince, он использует функциональность метода, определенной в описании класса мастера.

Please, Harry, clean up
Imperius {Dudley, clean up}

Куда пойти отсюда?

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

Присоединяйтесь к 55,235 амбициозных кодеров в моем списке электронных напитков – и изучите словарь Python с нуля!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

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