История изменений
Исправление Nervous, (текущая версия) :
Это и есть полиморфизмус
Хреновенький, правда — чтобы добавить новую фигуру и реализацию draw()
для неё, придётся править класс Canvas
(и с некоторой вероятностью сломать уже работающие реализации). Open-closed principle (O in SOLID) не рекомендует так делать.
Лучше, если бы метод draw()
был у самих фигур — тогда при добавлении новой фигуры старый код гарантированно не ломается, потому что его не нужно изменять.
void draw(Line shape)
void draw(Square shape)
Кстати, можно заметить, что ООП тут как бы и ни при чём. По сути, это обычные полиморфные функции.
Можно сказать что в питоне нет полиморфизма, нет инкапсуляции, есть только наследование в привычном понимании, а абстракция - лишь в общем понимании
Всё в петоне есть, просто не всем удобно пользоваться. Даже полноценную инкапсуляцию можно наворотить, например, на замыканиях. Выглядеть, правда, будет как говно, но тем не менее.
Исходная версия Nervous, :
Это и есть полиморфизмус
Хреновенький, правда — чтобы добавить новую фигуру и реализацию draw()
для неё, придётся править класс Canvas
(и с некоторой вероятностью сломать уже работающие реализации). Open-closed principle (O in SOLID) не рекомендует так делать.
Лучше, если бы метод draw()
был у самих фигур — тогда при добавлении новой фигуры старый код гарантированно не ломается, потому что его не нужно изменять.
Можно сказать что в питоне нет полиморфизма, нет инкапсуляции, есть только наследование в привычном понимании, а абстракция - лишь в общем понимании
Всё в петоне есть, просто не всем удобно пользоваться. Даже полноценную инкапсуляцию можно наворотить, например, на замыканиях. Выглядеть, правда, будет как говно, но тем не менее.