Как ООП Python выдерживает сравнение с ООП PHP?

Как насчет использования числовых сущностей HTML { и } для { и } соответственно - предположительно, это должно быть выведено как HTML?

РЕДАКТИРОВАТЬ: Извините, я не слишком знаком с liquid (так что это может быть очень неправильно), но вы можете присвоить свое специальное значение {{ example }} переменной и вывести его? Может быть что-то вроде:

{% assign special = '{{ example }}' %}
{{ special }}
16
задан Thomas Schultz 27 May 2009 в 17:46
поделиться

6 ответов

Я бы сказал, что поддержка ООП в Python намного лучше, учитывая тот факт, что она была введена в язык на начальной стадии, в отличие от PHP, который привязывал ООП к существующей процедурной модели.

21
ответ дан 30 November 2019 в 16:10
поделиться

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

Он работает путем изменения имен членов, которые начинаются с двух знаков подчеркивания и заканчиваются менее чем двумя. Такие идентификаторы повсюду изменяются, поэтому к ним добавляется имя класса с дополнительным подчеркиванием перед ним. таким образом:

class foo:
    def public(self):
        return self.__private()
    def __private(self):
        return 5

print foo().public()
print foo()._foo__private()

имена, начинающиеся и заканчивающиеся двумя (или более) символами подчеркивания, не изменяются, поэтому __ init __ метод, который python использует для создания новых экземпляров, остается в покое.

Вот ссылка , объясняющая это более подробно.

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

ООП в Python очень сильна; он допускает множественное наследование, и все можно манипулировать как объект первого класса (включая классы, методы и т. д.).

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

Есть много маленьких педантичных вещей, которые, безусловно, не являются объектно ориентированными, например получение длина последовательности с len (list), а не list.len (), но о них лучше не беспокоиться.

8
ответ дан 30 November 2019 в 16:10
поделиться

Я думаю, что на данный момент они сопоставимы. В качестве простого теста я сомневаюсь, что в шаблонах проектирования или шаблонах архитектуры корпоративных приложений , возможно, двух наиболее влиятельных книгах по ООП, есть какой-либо шаблон, который невозможно реализовать на любом языке.

Оба языка развивались семимильными шагами с раннего детства.

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

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

Также: Python имеет встроенную перегрузку операторов, в отличие от PHP (хотя у него есть расширение). Нравится это вам или нет, но оно есть.

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

Если вы ищете "более чистый" ООП, вам следует обратить внимание на SmallTalk и / или Ruby.

PHP значительно расширился благодаря поддержке ООП, но из-за способа он работает (перезагружает все каждый раз), все может стать очень медленным, если следовать лучшим практикам ООП. Это одна из причин, по которой вы мало слышите о PHP on Rails.

1
ответ дан 30 November 2019 в 16:10
поделиться
Другие вопросы по тегам:

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