Принципы разработки OO относятся к Python?

Для разработчиков DevOps / build вы, вероятно, можете исправить этот запуск nuget restore в отношении затронутого SLN или проекта, если вам не хватает SLN. Я должен сделать это для наших сборников CI / CD для всех наших проектов UWP.

  1. Убедитесь, что nuget установлен на ведомом сборки либо в Visual Studio, либо в автономном режиме. Если это последний, убедитесь, что он находится в PATH и пропустите шаг 2.
  2. Либо откройте консоль VS Dev CMD, либо загрузите ее через уже открытую, что вы можете сделать с помощью приведенных ниже инструкций: VS2015 call "%VS140COMNTOOLS%VsDevCmd.bat" или VS2017 call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat"
  3. call nuget restore MyStuff.SLN или call nuget restore MyStuff.csproj, если нет SLN.
25
задан Jim 13 February 2009 в 16:00
поделиться

10 ответов

Самые большие различия - то, что Python является введенной уткой, означая, что Вы не должны будете распланировать иерархии классов в таком же количестве деталей как в Java и имеете функции первого класса. Стратегическая модель, например, становится намного более простой и более очевидной, когда можно просто передать функцию в, вместо того, чтобы иметь необходимость сделать интерфейсы, и т.д. только моделировать функции высшего порядка. В более общем плане Python имеет синтаксический сахар для большого количества шаблонов общего умысла, таких как итератор и вышеупомянутая стратегия. Могло бы быть полезно понять эти шаблоны (я имею считывающую головку Сначала и нашел это довольно полезным), но думайте о Pythonic способы реализовать их вместо того, чтобы просто делать вещи тем же путем, Вы были бы в Java.

36
ответ дан dsimcha 15 October 2019 в 15:26
поделиться

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

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

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

Пример:

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

Путем присвоения типа класса вызываемому объекту можно по существу удалить любые типы 'фабрики' в коде. Вас только оставляют с callables, которые производят объекты, которые должны соответствовать некоторым данным конвенциям.

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

12
ответ дан user21714 15 October 2019 в 15:26
поделиться

Это зависит от шаблона. Некоторые вещи трудно сделать в Python: Singleton является примером. Вы заменяете этот шаблон другим, такой как, в случае Singleton, Borg.
Это весьма нормально для использования шаблонов разработки в Python - шаблон Итератора, например, интегрируется в синтаксис. Однако много вещей просто не сделаны как OO - или тяжелый шаблоном материал. Python сделан быть процедурным или функциональным, когда он лучше всего удовлетворяет задаче и OO также.
В целом, я просто сказал бы для использования лучшего суждения. Если кажется, что использование Альфа-Гаммы Шаблона разработки является излишеством и сверхсложностью, то это, вероятно. Если кажется, что шаблон идеально подходит для того, что Вы хотите, это, вероятно.

4
ответ дан Devin Jeanpierre 15 October 2019 в 15:26
поделиться

Шаблоны разработки немного больше, чем клейкая лента для фиксации дефицитов языков.

4
ответ дан user21037 15 October 2019 в 15:26
поделиться

Короткий ответ: Да; Python является языком OO.

Немного более длинный ответ: Да; Вы можете дизайн с помощью принципов OO и затем реализация на любом языке (даже ассемблер).

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

Long, подробный, скучный ответ: (Разработка языков программирования не простая линейная прогрессия, но позволила мне упростить и игнорируют тот факт для создания наблюдения, которое охватывает приблизительно 40 лет программирования опыта.)

Там всегда будет ролью для функций языка по сравнению с принципами разработки и шаблонами. На каждом этапе внимательные практики заметили:

  • "Вот проблема, которую мы продолжаем решать вручную на нашем текущем языке (языках)".

  • "Вот ошибка, которую мы продолжаем писать на нашем текущем языке (языках)".

  • "Вот некоторые хорошие методы, которые мы продолжаем наблюдать в наших лучших программах".

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

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

4
ответ дан joel.neely 15 October 2019 в 15:26
поделиться

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

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

Duncan Booth записал статья о шаблонах в python.

3
ответ дан Geoglyph 15 October 2019 в 15:26
поделиться

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

1
ответ дан David Z 15 October 2019 в 15:26
поделиться

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

1
ответ дан Dustin Getz 15 October 2019 в 15:26
поделиться

Использование Java или C# происходит, вероятно, из-за основной популярности языка.

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

0
ответ дан Akbar ibrahim 15 October 2019 в 15:26
поделиться

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

0
ответ дан 28 November 2019 в 18:18
поделиться
Другие вопросы по тегам:

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