Перегрузка оператора класса

Нужно сделать перегрузку оператора +, аргументы: 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))
→ Ссылка