Принципы проектирования OO применимы к Python?



Answers

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

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

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

Пример:

x = list
my_list = x(range(0,5)) #creates a new list by invoking list's constructor

Назначая тип класса вызываемому объекту, вы можете по существу удалить любые «фабричные» типы в своем коде. Вы остаетесь только с вызывающими, которые создают объекты, которые должны соответствовать некоторым данным соглашениям.

Кроме того, в Python есть шаблоны проектирования, которые не могут быть представлены на других статически типизированных языках эффективно. Хорошими примерами являются метаклассы и декораторы.

Question

Кажется, что во многих дискуссиях OO используют Java или C # в качестве примеров (например, Head First Design Patterns).

Эти шаблоны применяются в равной степени к Python? Или, если я буду следовать шаблонам проектирования, я просто закончу писать Java в Python (что, по-видимому, очень плохо)?




Шаблоны проектирования - это немного больше, чем лента для исправления языковых недостатков.




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




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




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

Шаблон итератора также используется в Python, хотя и в несколько иной форме.

Дункан Бут написал статью о шаблонах в python .






Links



Tags

python python   oop