Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 1
Регистрация: 05.01.2015
Сообщений: 85

Перегрузка операторов

20.11.2015, 23:26. Показов 1343. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Перечитал много статей и курсов про перезагрузку операторов, но так до конца и не понял их преимущества перед использованием обычных функций в классе. Да с точки синтаксиса - меньше кода, но тогда почему ими лучше не злоупотреблять? При этом конструктор __init__ напротив - рекомендуют использовать практически в каждой программе.. Поделитесь опытом..
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.11.2015, 23:26
Ответы с готовыми решениями:

Перегрузка операторов
Написал такой код: class CVector: def __init__(self, x_, y_): self.m_x = x_ self.m_y = y_ def add(self, vector):...

Перегрузка операторов
Может ли кто ни-будь обяснить мне на человеческом языке, что такое перегрузка операторов, обшарил весь интернет и никто толком обяснить не...

Перегрузка операторов
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import math # Создать класс Triangle для представления треугольника. Поля...

5
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
21.11.2015, 01:10
ValeriiK, Ну судя по вопросу у тебя вообще каша в голове. Начнем с начала, ты знаешь, что такое Инкапсуляци, Полиморфизм, Наследование?
Почитай http://gos-it.wikia.com/wiki/О... олиморфизм, будет полезно. Особое внимание обрати на полиморфиз, это как раз то о чем ты спрашиваешь.
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
23.11.2015, 09:09
Пример.
Python
1
2
a = [1,5,2,3]
b = [6,2,1,3]
Как сложить?
Python
1
2
3
c = []
for ai, bi in zip(a,b):
   c.append(ai+bi)
А вот пример на numpy.
Python
1
2
3
a = np.array([1,5,2,3])
b = np.array([6,2,1,3])
c=a+b
0
1 / 1 / 1
Регистрация: 05.01.2015
Сообщений: 85
23.11.2015, 11:06  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Пример.
Python
1
2
a = [1,5,2,3]
b = [6,2,1,3]
Как сложить?
Python
1
2
3
c = []
for ai, bi in zip(a,b):
   c.append(ai+bi)
А вот пример на numpy.
Python
1
2
3
a = np.array([1,5,2,3])
b = np.array([6,2,1,3])
c=a+b
Спасибо за ответы. В 1-м решении вы сами написали ф-ию, а во 2-м использовали готовую. А я спрашивал про перегрузку операторов, например про __add__. С их преимуществом я уже разобрался, остался вопрос - почему Лутц не рекомендует ими злоупотреблять?
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
23.11.2015, 11:56
Цитата Сообщение от ValeriiK Посмотреть сообщение
В 1-м решении вы сами написали ф-ию, а во 2-м использовали готовую.
Второй пример демонстрирует использование перегруженного оператора. Синтаксически запись лаконичнее.

Цитата Сообщение от ValeriiK Посмотреть сообщение
остался вопрос - почему Лутц не рекомендует ими злоупотреблять?
Есть мнение, что злоупотребление перегрузкой операторов может привести к сложному для понимания коду. В приведенном выше примере теоретически можно ожидать двух разных вариантов поведения от операции сложения: либо конкатенацию массивов, либо поэлементное сложение.
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
23.11.2015, 14:47
Цитата Сообщение от ValeriiK Посмотреть сообщение
В 1-м решении вы сами написали ф-ию, а во 2-м использовали готовую. А я спрашивал про перегрузку операторов, например про __add__.
Прочитайте ещё раз, внимательнее, не торопясь. Дело не в готовой функции, а в том, как она вызывается.

Добавлено через 2 часа 45 минут
Вот ещё пример:
Определите номер человека
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2015, 14:47
Помогаю со студенческими работами здесь

Перегрузка операторов
Одномерный массив(вектор) вещественных чисел. Дополнительно перегрузить следующие операции: “+” сложение векторов (a+b для всех i); ...

Динамическая перегрузка операторов
Как динамически перегружать операторы? В python 3.7 можно сделать так: class Test(): pass test = Test() test.__call__ =...

Магические методы. Перегрузка операторов
Конструктор __init__, принимающий произвольное количество аргументов. Среди всех переданных аргументов необходимо оставить только целые...

ООП. Перегрузка операторов в наследование с примесью полиморфизма
Здравствуйте, нужна помощь, а то мозг болит. В общем не получается получить сумму разных атрибутов из разных наследуемых классов, а...

Перегрузка оператор ввода вывода и перегрузка арифметических операторов С++
Создать класс Time для работы со временем в формате «час:минута:секунда». Класс должен включать в себя не менее четырех функций...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru