Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

Ключами объектной ориентации являются абстракция, инкапсуляция, наследование и полиморфизм. Какие из них отсутствуют в Python?

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

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

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

Ответ 7

Язык называется Full Objective Oriented, если он не имеет примитивных типов данных. Каждый тип данных, который нам нужно построить.