Не срабатывает оператор " if "

FRR

Новичок
Пользователь
Авг 30, 2020
2
0
1
Здравствуйте, пытаюсь разобраться в специальных методах у классов

Использую:
  1. Windows 7
  2. Python 3.8

Проблема в следующем:

При вызове специального метода __add__ в классе на срабатывает оператор if
От функции print хочу добиться того, чтобы при сложении Air() + Water() результат был 'Шторм'

Python:
class Water:
    """ Вода """

    def __str__(self):
        return 'Вода'

    def __add__(self, other):
        if other == Air():
            new_element = Storm()
        # elif other == Fire():
        #     new_element = Steam()
        # elif other == Earth():
        #     new_element = Mud()
        else:
            new_element = None
        return new_element


class Air:
    """ Воздух """

    def __str__(self):
        return 'Воздух'

    def __add__(self, other):
        if other == Water():
            new_element = Storm()
        # elif other == Fire():
        #     new_element = Lightning()
        # elif other == Earth():
        #     new_element = Dust()
        else:
            new_element = None
        return new_element


class Storm:

    def __str__(self):
        return 'Шторм'

print( Air(), '+' ,Water(), '=', Air() + Water())
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Вот исправленный пример:
Python:
class Water:
    """ Вода """

    def __str__(self):
        return "Вода"

    def __add__(self, other):
        if isinstance(other, Air):
            new_element = Storm()
            # elif other == Fire():
            #     new_element = Steam()
            # elif other == Earth():
            #     new_element = Mud()
        else:
            new_element = None
        return new_element


class Air:
    """ Воздух """

    def __str__(self):
        return "Воздух"

    def __add__(self, other):
        if isinstance(other, Water):
            new_element = Storm()
            # elif other == Fire():
            #     new_element = Lightning()
            # elif other == Earth():
            #     new_element = Dust()
        else:
            new_element = None
        return new_element


class Storm:
    def __str__(self):
        return "Шторм"


print(Air(), "+", Water(), "=", Air() + Water())
 
  • Мне нравится
Реакции: FRR

FRR

Новичок
Пользователь
Авг 30, 2020
2
0
1
Большое спасибо) Всё работает
 

Форум IT Специалистов