Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для VLaDoS_2001a
319 / 216 / 114
Регистрация: 14.05.2020
Сообщений: 890

Перегрузка магических методов

16.09.2021, 21:13. Показов 1339. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Правильно ли я перегружаю операторы , если нет как можно улучшить?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Int:
    def __init__(self, n):
        self.num = n
    
    def __str__(self):
        return f'{self.num}'
    
    def __add__(self, n):
        return Int(self.num + n)
        
    def __iadd__(self, n):
        self.num += n
        return self
    
        
    def __mul__(self, n):
        return Int(self.num * n)
    
    def __eq__(self, n):
        return self.num == n
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.09.2021, 21:13
Ответы с готовыми решениями:

Перегрузка методов
Здравствуйте. >>> class Animal: ... def __init__(self): ... self.name = "Animal" ... self.age = 0 ... ...

ООП, наследование, перегрузка методов
Создать класс квадрат, член класса — длина стороны. Предусмотреть в классе методы вычисления и вывода сведений о фигуре: периметр, площадь,...

Перегрузка методов
помогите сделать перегрузку,вот программа using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

3
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
16.09.2021, 22:04
Цитата Сообщение от VLaDoS_2001a Посмотреть сообщение
Правильно ли я перегружаю операторы , если нет как можно улучшить?
Смотря что ты хочешь получить. __str__ вроде правильно. А вот например __add__ у тебя складывает с числом. Если ты этого добивался то значит правильно. Если хотел складывать между собой объекты типа Int(), то надо немного по другому.

Добавлено через 48 секунд
Python
1
2
    def __add__(self, n):
        return Int(self.num + n.num)
Добавлено через 2 минуты
С умножением и сравнение тоже самое. Если умножаешь на число или сравниваешь с числом, то все норм. А если хочешь работать с объектами такого же типа, то надо подправить по аналогии (заменить "n" на "n.num").
0
 Аватар для VLaDoS_2001a
319 / 216 / 114
Регистрация: 14.05.2020
Сообщений: 890
16.09.2021, 22:12  [ТС]
Чёт переход с плюсов сложный, а с помощью ветвления и isinstance отслеживать можно?
0
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
16.09.2021, 22:32
Лучший ответ Сообщение было отмечено zss как решение

Решение

Можно.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Int:
    def __init__(self, n):
        self.num = n
    
    def __str__(self):
        return f'{self.num}'
    
    def __add__(self, n):
        return Int(self.num + n.num) if isinstance(n, Int) else Int(self.num + n)
        
one = Int(1)
two = Int(2)
print(f'one + two = {one + two}')
print(f'one + 5 = {one + 5}')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.09.2021, 22:32
Помогаю со студенческими работами здесь

Перегрузка методов
Помогите пожалуйста разобрать задание. Идет набор на курсы трактористов. Тех, кто имеет водительские права, берут сразу на 2...

Перегрузка методов.
Добрый день, уважаемые специалисты. Прошу подсказать, можно ли реализовать следующее: Есть некий class. В нем нужно реализовать...

Перегрузка методов
Помогите написать программу. Создать массив объектов, и с помощью методов класса предусмотреть следующие возможности: • вывод...

Перегрузка методов
Доброго времени суток. Народ, вопрос такой: можно ли private метод базового класса перегрузить public методом производного класса. Ответ...

Перегрузка методов
Не могу решить Как создать метод, который принимает список целых чисел и возвращает новый список с целыми числами в обратном порядке


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой
Programma_Boinc 10.04.2026
Видеокарта простаивает ночами? Вот 4 проекта, которые загрузят её наукой Если на Windows стоит дискретная NVIDIA или AMD — можно отдать её вычислительную мощность реальным исследованиям. . . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru