Как переопределить метод в python
Перейти к содержимому

Как переопределить метод в python

Переопределение в Python

В этой статье мы собираемся исследовать концепцию переопределения в Python. Мы также собираемся исследовать, какие магические методы и абстрактные классы. Введение введение – это интересная концепция в объектно-ориентированном программировании. Когда метод определения базового класса изменяются в классе подкласса (полученный), это называется … переопределение в Python Подробнее »

  • Автор записи

В этой статье мы собираемся исследовать концепцию переопределения в Python. Мы также собираемся исследовать, какие магические методы и абстрактные классы.

Вступление

Переопределение – это интересная концепция в объектно-ориентированном программировании. Когда метод определения базового класса изменяются в классе подкласса (полученный), это называется переопределением метода. Вы сохраняете одну и ту же подпись метода, но изменяя определение или реализацию метода, определенного одним из предков. Нет специальных синтаксисов или дополнительных ключевых слов, необходимых для проведения метода, перекрывающегося в Python. Это очень важная объектно-ориентированная концепция программирования, так как она делает наследство, используя свою полную мощность. Overriding is an interesting concept in object-oriented programming . When the method definitions of a Base Class are changed in a Subclass (Derived) Class this is called a method override. You are keeping the same signature of the method but changing the definition or implementation of a method defined by one of the ancestors. There is no special syntax or additional keywords needed to do method overriding in Python. It is a very important object-oriented programming concept since it makes inheritance exploit its full power. In essence, you are not duplicating code, thus following the programming principle of DRY (do not repeat yourself), and you can enhance the method in the subclass. По сути, вы не дублируете код, таким образом, следуя принципу программирования сухих (не повторяйте себя), и вы можете улучшить метод в подклассе.

Чтобы понять концепцию переопределения, вы должны знать основные концепции объектно-ориентированного программирования, такие как классы и наследство. В Интернете много ресурсов о ООП. To understand the concept of overrides, you must know the basic concepts of object-oriented programming such as classes and inheritance. There are many resources on the internet about OOP. A really good resource is Finxter Academy’s object-oriented Python class: https://academy.finxter.com/university/object-oriented-python/Действительно хороший ресурс – это ориентированный объектно-ориентированный класс Python Academy Academy:

Нужно для переопределения

В следующем примере вы видите, как работает наследование, и проблема не переопределить метод в подклассе. У материнского класса есть метод WHOAMI Это отображает «Я родитель» Отказ In the following example, you see how inheritance works and the problem of not overriding a method in the subclass. The Parent class has a method whoami that displays «I am a parent» . This method is inherited by the Child class. Calling the

Пример наследования без переопределения метода:

Основное переопределение

Следующий пример показывает, как основные переопределенные работы. В этом примере Ребенок Класс имеет определение WHOAMI Метод, который переопределяет метод от Родитель учебный класс. Призывая WHOAMI Метод от Ребенок Класс теперь отображает «Я ребенок» Отказ

Базовый переопределенный пример:

Расширение метода через переопределение

Третий пример показывает, как вы можете простираться Способ в базовом классе путем переопределения метода в подклассе. The third example shows how you can extend a method in a Base Class by overriding the method in the Subclass. To do that we use the

Сотрудник Класс имеет следующие данные для сотрудника: номер сотрудника, имя сотрудника, зарплата и, номер отдела. Эта информация передается в экземпляр объекта в __init__ метод. Showemployeree Способ класса затем отображает эту информацию, отформатированную с помощью новых строк.

Продавец класс наследует от Сотрудник учебный класс. По умолчанию он наследует Showemployeree метод как есть из Сотрудник учебный класс. Единственная проблема заключается в том, что мы хотим показать комиссию, что продавец получает в рамках печатной информации. Вот где требуется переопределение. Мы хотим повторно использовать Showemployeree Метод от Сотрудник учебный класс Но мы хотим продлить его, чтобы добавить информацию комиссии. Это достигается с помощью Super () Встроенная функция. В приведенном ниже примере вы видите, что в Продавец Класс, Super () используется дважды. The Salesman class inherits from the Employee class. By default, it inherits the showEmployee method as-is from the Employee class. The only problem is that we want to display the commission that the salesman receives as part of the printed information. Here is where overriding is needed. We want to reuse the showEmployee method from the

Третий класс называется Генеральный директор использует ту же логику, что и раньше. A third class called CEO uses the same logic as before. The showEmployee method in this case displays the employee information plus the stock options for the

Многократное наследование Переопределение

Понимание Многократное наследование имеет свои проблемы. Одним из них является использование Super () Отказ Вот ссылка на статью об этом вопросе: https://www.datacamp.com/community/tutorials/super-multiple-ineritance-diamond-problem.

В приведенном ниже примере я хотел показать способ переопределить способ из подкласса с несколькими наследованиями. In the example below, I wanted to show a way to override a method from a subclass with multiple inheritance. The example consists of three classes: Account , Customer , and Orders . Пример состоит из трех классов:

  • Учетная запись Класс имеет свое имя и номер и метод отображения, который отображает эту информацию.
  • Клиент Класс имеет также свое имя и номер и метод отображения, который отображает эту информацию.
  • Заказы Класс отображает информацию о заказе для клиента на конкретном счете. Он наследует как из Учетная запись и класс заказов. The

Различные переопределенные сценарии

1 – Методы класса

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

Методы классов написаны аналогично методам регулярных экземпляров. Одно отличие – это использование Декоратор @classmethod Чтобы определить, что метод является методом класса. Также по Конвенции, а не используя себя, чтобы ссылаться на экземпляр класса, CLS использует для ссылки класса. Class methods are written similarly to regular instance methods. One difference is the use of the

Для получения дополнительной информации о методах класса проверьте это интернет сайт.

Вот пример проблемы, когда вы столкнетесь при переопределении метода класса:

В Подкласс звонок к Parentclass Способ создания не является несвязанным вызовом, как это происходит с нормальным методом экземпляра. Итоги этого звонка – это Типеррор Потому что метод получил слишком много аргументов.

Решение для использования Super () Для успешного использования родительской реализации.

2 – Магические методы

Что такое магические методы?

Magic Methods – это набор методов, которые Python автоматически связывается с каждым определением класса. Ваши классы могут переопределить эти магические методы для реализации различных поведений и заставить их действовать так же, как встроенные классы Python. Ниже вы увидите примеры двух наиболее распространенных: __str__ и __repl__ Отказ Используя эти два метода, вы можете реализовать, как ваши объекты отображаются в виде строк, которые будут важны при отладке и представлении информации пользователю. Переопределение этих методов добавляет гибкость и мощность Python.

__str__ Способ класса используется, когда Python печатает объект. Этот магический метод называется утра Встроенная функция.

__repr__ Способ класса используется для отображения деталей значений объекта. Этот магический метод называется встроенным репре функция.

Вот список магических методов. Вы можете узнать больше о них здесь ( https://www.tutorialsteacher.com/python/magic-methods-in-python ) И подумайте, как переопределить их, чтобы соответствовать вашим потребностям:

3 – Абстрактные классы

Абстрактный класс – это план, что подклассы должны следовать. An abstract class is a blueprint that subclasses must follow. It can be viewed as a contract between the abstract class and the subclass. The abstract class tells you what to do by providing an empty abstract method and the subclass must implement it. By default, you must override the abstract methods defined by the abstract class. In other terms, we are providing a common interface for different implementations of a class. This is very useful for large projects where certain functionality must be implemented. Он можно рассматривать как договор между абстрактным классом и подклассом. An abstract class is a blueprint that subclasses must follow. It can be viewed as a contract between the abstract class and the subclass. The abstract class tells you what to do by providing an empty abstract method and the subclass must implement it. By default, you must override the abstract methods defined by the abstract class. In other terms, we are providing a common interface for different implementations of a class. This is very useful for large projects where certain functionality must be implemented. Абстрактный класс говорит вам, что делать, предоставляя пустой абстрактный метод, а подкласс должен его реализовать. По умолчанию вы должны переопределить абстрактные методы, определенные абстрактным классом. В других условиях мы предоставляем общий интерфейс для разных реализаций класса. Это очень полезно для крупных проектов, где необходимо реализовать определенные функциональные возможности.

Вот пример абстрактного класса и перевысимых методов в подклассах.

Вывод

Переопределение – это базовая концепция, используемая во многих местах в объектно-ориентированном программировании. Вы должны понимать, что он сможет реализовать лучшие классы и изменять их поведение. Эта статья показывает вам несколько примеров, в которых вы можете использовать переопределение в Python. Другие понятия, упомянутые, которые стоит узнать больше о следующих достопримечательностях: магический метод и абстрактные классы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *