Python полностью поддерживает ООП?

Серия Не Ван Россум

"Честное слово, я и не подозревал, что вот уже более сорока лет говорю прозой"

(Мещанин во дворянстве, Жан-Батист Мольер).

Давайте вспомним основные принципы ООП. Наследование, инкапсуляция и полиморфизм.

С наследованием, думаю, все понятно. Наверняка каждый создавал класс наследованный от чего-либо, начиная с dict и далее.

class NoneDict(dict):

····def missing(self, key):

········return None

nd = NoneDict({'a': 1, 'b':2})

print(nd['a'], nd['b'], nd['c'])

>>>1 2 None

(Также я обещал одному юному подписчику показать пример, как не париться с ключами даже без defaultdict модуля collections)

Рассматриваем дальше. Инкапсуляция.

"Под инкапсуляцией в объектно-ориентированном программировании понимается упаковка данных и методов для их обработки вместе, т. е. в классе."

Очевидно, что это реализовано тоже, и каждый экземпляр класса всё своё носит с собой.

"Полиморфизм позволяет обращаться с объектами разных классов так, как будто они являются объектами одного класса."

Тоже весьма очевидно. Наследование и перегрузка методов (плюс магические методы) позволяют нам при желании взаимодействовать с классами универсально и единообразно.


На самом деле, мы используем эти принципы ежедневно, даже не задумываясь о том, что "мы используем здесь такой-то принцип, потому что...". Очевидно, что язык явным и естественным образом направляет нас к единственно правильному способу сделать "это" (см. PEP20).

Ребята, сказал бы я, мальчишки и девчонки – пока молодые, развивайте полный лотос, он очень пригодится вам в жизни. И ничего не берите в голову, кроме щебета птиц, шума ветра и плеска волн.

(Тайные виды на гору Фудзи, Виктор Пелевин).


Ребята, мальчишки и девчонки – пишите классы, хорошие и разные, наследуйте их, храните их данные рядом с методами, перегружайте методы под особенности класса. И ничего не берите в голову, кроме чистоты кода и красоты реализации.

Таким образом, мы выяснили, что Python полностью поддерживает ООП.

Это кросспост из моего Telegram-канала "Не Ван Россум", где я прямо сейчас пишу сериал "101 вопрос про Python" с описанием подводных камней, неочевидностей и загвоздок.

0
Автор поста оценил этот комментарий

В python инкапсуляция реализована не полностью, а лишь на уровне договоренностей.


Программист при желании может извне присвоить значение приватному свойству

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Верно.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества