шаблоны проектирования python [закрыто]



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

499   6  

6 ответов:

некоторые перекрытия в этих

среднее и продвинутое программное обеспечение плотницкие работы в Python

код, как Pythonista: идиоматический Python

Python идиомы и эффективность

Google Developers Day US-Python Design Patterns

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

тип

>>> import this

в консоли Python.

хотя это обычно рассматривается как (хорошо!) шутка, он содержит несколько действительных аксиом, специфичных для python.

Брюса Экеля" мышление на Python " сильно опирается на шаблоны проектирования

вы можете начать здесь и здесь.

для более глубокого взгляда на дизайн pattners вы должны посмотреть на шаблоны проектирования: элементы объектно-ориентированного проектирования. Исходный код не в Python, но это не должно быть для вас, чтобы понять шаблоны.

что-то вы можете использовать для упрощения кода при вызове атрибутов на объекты, которые могут или не могут существовать, чтобы использовать Шаблон Проектирования Нулевого Объекта (к которому я был представлен в Python Cookbook).

грубо говоря, цель с нулевыми объектами состоит в том, чтобы обеспечить "интеллектуальный" замена часто используется примитивный тип данных в Python или нет Null (или указатели Null) в других языках. Они используются для многих цели в том числе важный случай, когда один член какой-то группы в остальном подобные элементы являются особенными по какой-либо причине. Наиболее часто это приводит к условным операторам для различения обычные элементы и примитивное нулевое значение.

этот объект просто съедает отсутствие ошибки атрибута, и вы можете избежать проверки их существования.

это не более, чем

class Null(object):

    def __init__(self, *args, **kwargs):
        "Ignore parameters."
        return None

    def __call__(self, *args, **kwargs):
        "Ignore method calls."
        return self

    def __getattr__(self, mname):
        "Ignore attribute requests."
        return self

    def __setattr__(self, name, value):
        "Ignore attribute setting."
        return self

    def __delattr__(self, name):
        "Ignore deleting attributes."
        return self

    def __repr__(self):
        "Return a string representation."
        return "<Null>"

    def __str__(self):
        "Convert to a string and return it."
        return "Null"

С этим, если у вас Null("any", "params", "you", "want").attribute_that_doesnt_exists() он не взорвется, а просто молча стать эквивалентом pass.

обычно вы делаете что-то вроде

if obj.attr:
    obj.attr()

С этим, вы просто сделать:

obj.attr()

и забыть об этом. Помните, что широкое использование

вы также можете прочитать это статьи (выберите .pdf file), в котором обсуждаются шаблоны проектирования на динамических объектно-ориентированных языках (например, Python). Чтобы процитировать страницу:

в этой статье исследуется, как шаблоны из "Банды четырех", или книги "GOF", как ее часто называют, появляются, когда аналогичные проблемы решаются с использованием динамического, более высокого порядка, объектно-ориентированного языка программирования. Некоторые модели исчезают-то есть, они поддерживаются непосредственно по языковым особенностям некоторые шаблоны проще или имеют другую направленность, а некоторые по существу неизменны.

Comments

    Ничего не найдено.