Форум сайта python.su
0
“Вода” + “воздух” должно быть = “шторм”, “вода” + “огонь” = “пар”. Не могу понять как это сделать.
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)
Офлайн
124
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
Офлайн
0
xam1816, спасибо, очень помогли
Офлайн