Перегрузка оператора класса
Нужно сделать перегрузку оператора +, аргументы: Convert или int, как лучше перегрузить?
class Convert:
'''Класс для конвертации десятичных чисел в бинарные'''
def __init__(self, dec: int) -> None:
self.__dec: int = dec
def __str__(self) -> str:
return f'{self.__dec}'
def __add__(self, other: t.Union['Convert', int]) -> 'Convert':
if isinstance(other, Convert):
return Convert(self.__dec + other.__dec)
return Convert(self.__dec + other)
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
В вашем случае использование isinstance нормально.
Есть лазейка связанная с волшебным методом __int__. Определяется преобразование вашего типа в целое. Для других типов не сработает:
class Convert:
'''Класс для конвертации десятичных чисел в бинарные'''
def __init__(self, dec: int) -> None:
self.__dec: int = dec
def __str__(self) -> str:
return f'{self.__dec}'
def __int__(self) -> int:
return self.__dec
def __add__(self, other: t.Union['Convert', int]) -> 'Convert':
return Convert(self.__dec + int(other))