Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
Привет всем, яодна чаша в неделю, передняя часть, которая не хочет быть пьяной (завернутой). Если написанной статье посчастливилось получить вашу благосклонность, мне очень повезло~
Понимание операционных концепций
операция (Operation) является абстракцией логики операции
- Операция воплощает в себе своего рода логику операции.В широком смысле любая программа является операцией
- Интерпретатор Python резервирует пакет операционных интерфейсов через зарезервированный метод, который необходимо перегрузить.
- Зарезервированный метод обычно соответствует оператору, а операция в Python отражается как перегрузка оператора
- Операция по существу воплощает отношения взаимодействия, отношения сдерживания и отношения обычных операций.
Ограничения арифметической перегрузки
- Операторы встроенных типов в языке Python нельзя перегружать
- Вы не можете создавать новые операторы, вы можете сделать это только перегрузив
-
is,and,not,orне может быть перегружен
перегрузка оператора
арифметические операторы
- Унарный оператор:
+,-,~ - Бинарные операторы:
+,-,*,/,//,%,divmod(),pow(),**,<<,>>,&,^,|
| зарезервированный метод | соответствующая операция | описывать |
|---|---|---|
.__neg__(self) |
-obj |
Определить логику операции отрицания объекта |
.__pos__(self) |
+obj |
Определить логику работы объекта, принимающего положительные |
.__abs__(self) |
abs(obj) |
Определить логику работы абсолютного значения объекта |
.__invert__(self) |
~obj |
Определить логику операции отрицания объекта |
.__add__(self, other) |
obj + other |
Определяет логику операции добавления двух объектов |
.__sub__(self, other) |
obj - other |
Определяет логику операции для вычитания двух объектов |
.__mul__(self, other) |
obj * other |
Определяет логику операции умножения двух объектов |
.__truediv__(self, other) |
obj / other |
Определяет логику разделения двух объектов |
.__floordiv__(self, other) |
obj // other |
Определяет логику операции целочисленного деления двух объектов |
.__mod__(self, other) |
obj % other |
Определяет логику работы двух объектных модулей |
.__divmod__(self, other) |
divmod(obj, other) |
Определяет логику операции для деления по модулю двух объектов |
.__pow__(self, other) |
obj ** other |
Определить логику работы объекта питания |
.__lshift__(self, other) |
obj << other |
Определить логику работы объекта сдвига влево |
.__rshift__(self, other) |
obj >> other |
Определить логику работы сдвига объекта вправо |
.__and__(self, other) |
obj & other |
Определить два объекта в арифметической логике |
.__xor__(self, other) |
obj ^ other |
Определить логику операции побитового XOR двух объектов |
.__or__(self, other) |
`obj | other` |
оператор сравнения
Оператор сравнения:<,<=,==,!=,>,>=
| зарезервированный метод | соответствующая операция |
|---|---|
.__lt__(self, other) |
obj < other |
.__le__(self, other) |
obj <= other |
.__eq__(self, other) |
obj == other |
.__be__(self, other) |
obj != other |
.__gt__(self, other) |
obj > other |
.__ge__(self, other) |
obj >= other |
Арифметическая перегрузка для сравнения двух объектов
операция члена
- Участники получают:
[],def,.reversed() - Решение участника:
in
| зарезервированный метод | соответствующая операция | описывать |
|---|---|---|
.__getitem__(self, key) |
obj[k] |
Определяет логику операции для получения порядкового номера элемента K в объекте, где K — целое число. |
.__setitem__(self, key, v) |
obj[k] = v |
Определить логику работы элемента порядкового номера K в объекте присвоения |
.__delitem__(self, key) |
del obj[k] |
Определить логику операции для удаления элемента порядкового номера K в объекте |
.__reversed__(self) |
obj.reversed() |
Определение логики работы реверсирования объекта |
.__contains__(self, item) |
item in obj |
Определите логику операции, соответствующую оператору in |
другие операции
Встроенные функции Python:rep(),str(),len(),int(),flaot,complex(),round(),bytes(),bool(),format(),.format(общий метод)
| зарезервированный метод | соответствующая операция | описывать |
|---|---|---|
__repr__(self) |
repr(obj) |
Определить логику работы печатной строки объекта |
__str__(self) |
str(obj) |
Определить логику операции преобразования строки объекта |
__len__(self) |
len(obj) |
Определить логику операции длины объекта |
__int__(self) |
int(obj) |
Определить логику операции целочисленного преобразования объекта |
__float__(self) |
float(obj) |
Определить логику операции преобразования числа с плавающей запятой объекта |
__complex__(self) |
complex(obj) |
Определить логику работы комплексного преобразования объекта |
__round__(self) |
round(obj) |
Определяет арифметическую логику округления объектов. |
__bytes__(self) |
bytes(obj) |
Определить логику операции преобразования строки байтов объекта |
__bool__(self) |
bool(obj) |
Определить логику работы объекта Логическая операция |
.__format__(self, format_spec) |
obj.format() format(obj)
|
Определить логику работы форматированного вывода объекта |
Полиморфизм классов Python
полиморфизм_(Полиморфизм)_ — это полиморфизм методов, отражающий гибкость методов; короче говоря, он состоит из двух частей
-
Полиморфизм типов параметров: способность метода обрабатывать несколько типов.
Функции/методы Python не имеют ограничений на объявление типов и естественным образом поддерживают полиморфизм типов параметров.
Философия программирования Python: ограничения документа, а не ограничения синтаксиса
Различие и функции различных типов параметров должны быть выполнены программистом.
-
Параметрический полиморфизм: способность метода принимать несколько параметров.
Функции/методы Python могут поддерживать переменные параметры и полиморфизм в виде параметров.
Методы класса Python также являются функциями, и допустимы различные определения функций.
Программист должен определить количество различных параметров и значение по умолчанию.
Полиморфизм — это традиционная концепция ООП. Python естественным образом поддерживает полиморфизм и не требует специального синтаксиса. Пример кода выглядит следующим образом:
import abc
class Animal(metaclass=abc.ABCMeta): #同一类事物:动物
@abc.abstractmethod
def talk(self):
pass
class Cat(Animal): #动物的形态之一:猫
def talk(self):
print('say miaomiao')
class Dog(Animal): #动物的形态之二:狗
def talk(self):
print('say wangwang')
class Pig(Animal): #动物的形态之三:猪
def talk(self):
print('say aoao')