Найти - Пользователи
Полная версия: Простая задача, метод __add__ не могу решить
Начало » Центр помощи » Простая задача, метод __add__ не могу решить
1
vladimir_vl_vlad
“Вода” + “воздух” должно быть = “шторм”, “вода” + “огонь” = “пар”. Не могу понять как это сделать.

 class Water:
    def __str__(self):
        return 'Я вода'
    def __add__(self, other):
        return Storm(part1=self, part2=other)
class Air:
    def __str__(self):
        return 'Я воздух'
    def __add__(self, other):
        return Storm(part1=self, part2=other)
class Fire:
    def __str__(self):
        return 'Я огонь'
    def __add__(self, other):
        return Steam(part1=self, part2=other)
class Storm:
    def __init__(self, part1, part2):
        self.part1 = part1
        self.part2 = part2
    def __str__(self):
        return 'Я шторм. Состою из ' + str(self.part1) + ' и ' + str(self.part2)
class Steam:
    def __init__(self, part1, part2):
        self.part1 = part1
        self.part2 = part2
    def __str__(self):
        return 'Я пар. Состою из ' + str(self.part1) + ' и ' + str(self.part2)
water = Water()
air = Air()
result = water + air
print(result)
fire = Fire()
result2 = water + fire
print(result2)
xam1816
vladimir_vl_vlad
Не могу понять как это сделать.
 class Water:
    def __str__(self):
        return 'Я вода'
    def __add__(self, other):
        if isinstance(other,Air):
            return Storm(part1=self, part2=other)
        elif isinstance(other, Fire):
            return Steam(self, other)
        else:
            raise TypeError('c `int` складывать нельзя')
class Air:
    def __str__(self):
        return 'Я воздух'
    def __add__(self, other):
        if isinstance(other, Water):
            return Storm(part1=self, part2=other)
class Fire:
    def __str__(self):
        return 'Я огонь'
    def __add__(self, other):
        if isinstance(other, Water):
            return Steam(part1=self, part2=other)
        elif isinstance(other,str):
            return other + ' ' + str(self)
class Storm:
    def __init__(self, part1, part2):
        self.part1 = part1
        self.part2 = part2
    def __str__(self):
        return 'Я шторм. Состою из ' + str(self.part1) + ' и ' + str(self.part2)
class Steam:
    def __init__(self, part1, part2):
        self.part1 = part1
        self.part2 = part2
    def __str__(self):
        return 'Я пар. Состою из ' + str(self.part1) + ' и ' + str(self.part2)
water = Water()
air = Air()
result = water + air
print(result)
fire = Fire()
result2 = water + fire
print(result2)
result3 = air + water
result4 = fire + water
print('после перестановки >>>')
print(result3)
print(result4)
print('если не определено >>>')
result5 = air + fire
print(result5)
print('если экземпляр класса `str` >>>')
result6 = fire + 'любая строка'
print(result6)
print('если `int` >>>')
try:
    result7 = water + 4
except Exception as e:
    print(e)

 Я шторм. Состою из Я вода и Я воздух
Я пар. Состою из Я вода и Я огонь
после перестановки >>>
Я шторм. Состою из Я воздух и Я вода
Я пар. Состою из Я огонь и Я вода
если не определено >>>
None
если экземпляр класса `str` >>>
любая строка Я огонь
если `int` >>>
c `int` складывать нельзя
Process finished with exit code 0
vladimir_vl_vlad
xam1816, спасибо, очень помогли
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB