LINUX.ORG.RU

История изменений

Исправление 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() был у самих фигур — тогда при добавлении новой фигуры старый код гарантированно не ломается, потому что его не нужно изменять.

Можно сказать что в питоне нет полиморфизма, нет инкапсуляции, есть только наследование в привычном понимании, а абстракция - лишь в общем понимании

Всё в петоне есть, просто не всем удобно пользоваться. Даже полноценную инкапсуляцию можно наворотить, например, на замыканиях. Выглядеть, правда, будет как говно, но тем не менее.