Определите add у класса A так, чтобы он принимал B и возвращал новый C. Для неподдерживаемого типа следует вернуть NotImplemented, а не произвольную ошибку.
Как реализовать A() + B() = C()? Как сложить два объекта и получить третий?
Определите __add__ у класса A так, чтобы он принимал B и возвращал новый C. Для неподдерживаемого типа следует вернуть NotImplemented, а не произвольную ошибку.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Определите add у класса A так, чтобы он принимал B и возвращал новый C. Для неподдерживаемого типа следует вернуть NotImplemented, а не произвольную ошибку.
from dataclasses import dataclass
@dataclass
class C:
value: int
@dataclass
class B:
value: int
@dataclass
class A:
value: int
def __add__(self, other):
if not isinstance(other, B):
return NotImplemented
return C(self.value + other.value)
result = A(2) + B(3) # C(value=5)
Знак = в формулировке означает желаемый результат, а не допустимое Python-присваивание в выражение сложения. Для обратного порядка B + A понадобится отдельная реализация, например __radd__ у A. Исходные объекты здесь не изменяются.