Для разработчиков DevOps / build вы, вероятно, можете исправить этот запуск nuget restore
в отношении затронутого SLN или проекта, если вам не хватает SLN. Я должен сделать это для наших сборников CI / CD для всех наших проектов UWP.
call "%VS140COMNTOOLS%VsDevCmd.bat"
или VS2017 call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\Tools\VsDevCmd.bat"
call nuget restore MyStuff.SLN
или call nuget restore MyStuff.csproj
, если нет SLN. Самые большие различия - то, что Python является введенной уткой, означая, что Вы не должны будете распланировать иерархии классов в таком же количестве деталей как в Java и имеете функции первого класса. Стратегическая модель, например, становится намного более простой и более очевидной, когда можно просто передать функцию в, вместо того, чтобы иметь необходимость сделать интерфейсы, и т.д. только моделировать функции высшего порядка. В более общем плане Python имеет синтаксический сахар для большого количества шаблонов общего умысла, таких как итератор и вышеупомянутая стратегия. Могло бы быть полезно понять эти шаблоны (я имею считывающую головку Сначала и нашел это довольно полезным), но думайте о Pythonic способы реализовать их вместо того, чтобы просто делать вещи тем же путем, Вы были бы в Java.
Python имеет свои собственные идиомы дизайна. Некоторые стандартные шаблоны применяются, другие не делают. Что-то как стратегия или фабрики имеет поддержку в языке, которые делают их прозрачными.
, Например, с первоклассными типами что-либо может быть фабрикой. Нет никакой потребности в типе фабрики, можно использовать класс непосредственно для построения любого объекта, который Вы хотите.
В основном, Python имеет свои собственные идиомы дизайна, которые несколько отличаются в основном, потому что это так динамично и имеет невероятные возможности самоанализа.
Пример:
x = list
my_list = x(range(0,5)) #creates a new list by invoking list's constructor
Путем присвоения типа класса вызываемому объекту можно по существу удалить любые типы 'фабрики' в коде. Вас только оставляют с callables, которые производят объекты, которые должны соответствовать некоторым данным конвенциям.
, Кроме того, существуют шаблоны разработки в Python, который просто не может быть представлен на других статически типизированных языках эффективно. Метаклассы и функциональные декораторы являются хорошими примерами этого.
Это зависит от шаблона. Некоторые вещи трудно сделать в Python: Singleton является примером. Вы заменяете этот шаблон другим, такой как, в случае Singleton, Borg.
Это весьма нормально для использования шаблонов разработки в Python - шаблон Итератора, например, интегрируется в синтаксис. Однако много вещей просто не сделаны как OO - или тяжелый шаблоном материал. Python сделан быть процедурным или функциональным, когда он лучше всего удовлетворяет задаче и OO также.
В целом, я просто сказал бы для использования лучшего суждения. Если кажется, что использование Альфа-Гаммы Шаблона разработки является излишеством и сверхсложностью, то это, вероятно. Если кажется, что шаблон идеально подходит для того, что Вы хотите, это, вероятно.
Шаблоны разработки немного больше, чем клейкая лента для фиксации дефицитов языков.
Короткий ответ: Да; Python является языком OO.
Немного более длинный ответ: Да; Вы можете дизайн с помощью принципов OO и затем реализация на любом языке (даже ассемблер).
преимущество использования языка OO - то, что оно включает поддержку многих общих понятий OO, таким образом, Вы не рискуете ненужными ошибками, имеющими необходимость моделировать их условно. Конечно, всегда будут определенные для языка детали с большей или меньшей применимостью; Вы спросили о "принципах разработки", которые должны быть выражены выше того уровня детализации.
Long, подробный, скучный ответ: (Разработка языков программирования не простая линейная прогрессия, но позволила мне упростить и игнорируют тот факт для создания наблюдения, которое охватывает приблизительно 40 лет программирования опыта.)
Там всегда будет ролью для функций языка по сравнению с принципами разработки и шаблонами. На каждом этапе внимательные практики заметили:
"Вот проблема, которую мы продолжаем решать вручную на нашем текущем языке (языках)".
"Вот ошибка, которую мы продолжаем писать на нашем текущем языке (языках)".
"Вот некоторые хорошие методы, которые мы продолжаем наблюдать в наших лучших программах".
И так следующее поколение языка (языков) склоняются, оказывают поддержку для наблюдаемого хорошего поведения, имеют тенденцию включать понятия, таким образом, они не должны быть сделаны конвенцией/соглашением (или случайно повреждены тем же), и осуществите методы, которые предотвращают легко преодолимые ошибки.
Независимо от того, насколько сложный, специализированный или обобщенный наши инструменты, всегда существуют программисты, которые "просто оказываются чудаком" и другими, которые продолжают выглядеть наблюдающими за тем, как "лучший и самый яркий" ( в уме наблюдателя ) используют инструменты. Они затем описывают и продвигают те методы. Правильно определенный (и названный ли "стилем", "инструкциями", "шаблонами", "принципами", и т.д.), те методы заканчивают тем, что формировали "следующий уровень", которого мы всегда пытаемся достигнуть, независимо от того, где мы в настоящее время стоим.
На дальнейшем размышлении некоторые шаблоны, такие как Borg, могут быть более характерны для Python (хотя подобные вещи могут быть сказаны о других шаблонах и языках).
шаблон итератора также используется в Python, хотя в немного отличающейся форме.
Duncan Booth записал статья о шаблонах в python.
Я сказал бы, что они относятся к Python, после того как Вы уже делаете объектно-ориентированное программирование с Python. Следует иметь в виду, что Python может сделать намного больше, чем ООП, и необходимо использовать здравый смысл в выборе соответствующей парадигмы для задания. Если Вы решаете, что Ваша программа лучше всего представлена как набор объектов, то уверенный, разрешение и использует шаблоны разработки, но не боится сделать что-то совершенно другое, если это требуется.
да, конечно, они применяются. Но, как отмечено выше, много шаблонов встроены в язык или сделаны не важные высокоуровневыми функциями языка.
Использование Java или C# происходит, вероятно, из-за основной популярности языка.
, Но принцип разработки и/или шаблоны разработки применяются независимо от языка, который Вы используете. Реализация того же шаблона разработки в Python, очевидно, отличалась бы, чем в Java или C#.
Да, вы можете использовать множество конструктивных узоров в Python. Шаблон дизайна - это просто повторяемая реализация задачи более высокого уровня. Причина, по которой паттерны Python & Design не работают так же, как и другие языки, потому что Python включает в себя большую часть встроенных базовых моделей. Это означает, что узоры, которые появляются в Python, скорее всего, являются шаблонами дизайна более высокого уровня для какие узоры обычно требуются.