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