Метод, переопределение против перегрузки в 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 и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.