Почему Python не полностью объектно-ориентирован? [закрытый]

Я хочу знать, почему Python не полностью объектно-ориентирован. Например, это не поддерживает частные, общедоступные модификаторы уровня защищенного доступа.

Каковы преимущества и недостатки этого? По этим выражениям Python подходит для какой приложения (Настольный, Научный, сеть или другой)?

50
задан wjandrea 7 June 2017 в 14:08
поделиться

6 ответов

Python не поддерживает строгую инкапсуляцию , которая является лишь одной из многих функций, связанных с термином «объектно-ориентированный».

Ответ - просто философия. Гвидо не любит что-то скрывать, и многие в сообществе Python согласны с ним.

87
ответ дан 7 November 2019 в 10:34
поделиться

Модификаторы доступа (общедоступный, частный, защищенный и т. Д.) Не требуются для программирования на основе классов . Это просто функция, как множественное наследование .

12
ответ дан 7 November 2019 в 10:34
поделиться

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

Отличительными чертами объектной ориентации являются абстракция, инкапсуляция, наследование и полиморфизм. Что из этого отсутствует в Python?

Объектная ориентация - это континуум. Можно сказать, что Smalltalk - чистейший из чистых, а все остальные занимают разные места на шкале.

Никто не может сказать, какова ценность 100% чистоты. Можно написать очень хороший объектно-ориентированный код на языках, кроме Smalltalk и Python.

Python полезен во всех этих областях: научная (NumPy), веб (Django) и настольная.

3
ответ дан 7 November 2019 в 10:34
поделиться

Я считаю, что Python - это скорее очень практичный, прагматичный язык.

Концепции, которые предлагают ценность для разработчика, закладываются в него, без излишнего внимания к теологическим концепциям вроде "правильного ОО-дизайна" и прочего. Это язык для людей, которым нужно выполнять реальную работу.

Я думаю, что Python подходит для всех видов сред, хотя Desktop немного затруднен из-за отсутствия единого фреймворка. Для всех приложений удобно использовать фреймворк, например, NumPy для вычислений, Twisted или Django для веб-приложений, а WxWidgets или другие для Desktop.

3
ответ дан 7 November 2019 в 10:34
поделиться

Что именно является полностью объектно-ориентированным? Алан Кей сказал: "Вообще-то я придумал термин "объектно-ориентированный", и могу сказать, что не имел в виду C++". Признаться, он, вероятно, не имел в виду и python, но стоит отметить, что Smalltalk также защищает классы по соглашению, без мандата.

1
ответ дан 7 November 2019 в 10:34
поделиться

Гвидо однажды сказал, что «мы все здесь взрослые по согласию». Вот более подробное объяснение из давних времен: http://mail.python.org/pipermail/tutor/2003-October/025932.html

Существует соглашение, согласно которому подчеркивание означает частные элементы, и вы не должны их использовать. Если только вы не знаете, что делаете, и действительно этого не хотите.

В ссылке также упоминается другой способ выразить это в случае Perl:

«модуль Perl предпочел бы, чтобы вы не заходил в гостиную
потому что тебя не пригласили, не потому что у него есть дробовик. "

42
ответ дан 7 November 2019 в 10:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: