Страницы

Поиск по вопросам

четверг, 2 апреля 2020 г.

Создание объекта класса через родителя. Python

#python #ооп

                    
Пишу калькулятор на python. У меня есть 2 типа кнопок: цифры и  операции. Описал
3 класса: класс кнопки(родитель), классы кнопки-операции и кнопки-цифры(дочерние).

class Button:
    pass

class NumberButton(Button):
    pass

class OperationButton(Button):
   pass


Есть макет калькулятора, сделанный на PyQt5, где каждая кнопка имеет имя:

а) num0, num1, num2, ... , num9 - кнопки цифр

б) op_plus, op_minus,  op_divide, op_multiply - кнопки операций

Вопрос. Как можно вынести конструктор в класс-родителя Button, чтобы я, смог создавать
объект класса через базовый класс, который сам бы определял, объект какого дочернего
класса нужно создать?

Хочу:

button = Button(button_name)


Не хочу:

if button_name == num0 or ... button_name == num0:
    button = NumberButton(button_name)
else:
    button = OperationButton(button_name)

    


Ответы

Ответ 1



Примерно как-то так: class Button: def __new__(cls, name): if 'num' in name: return NumberButton(name) else: return OperationButton(name)

Комментариев нет:

Отправить комментарий