#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)
Комментариев нет:
Отправить комментарий