Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.
Привет всем, яодна чаша в неделю, передняя часть, которая не хочет быть пьяной (завернутой). Если написанной статье посчастливилось получить вашу благосклонность, мне очень повезло~
Понимание операционных концепций
операция (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')