source

파이썬 디자인 패턴

manysource 2023. 7. 4. 22:00

파이썬 디자인 패턴

Python을 사용하여 모범 사례, 설계 패턴 및 SOLID 원칙의 예를 제공하는 자료를 찾고 있습니다.

이 중 일부는 중복됩니다.

Python의 중간 및 고급 소프트웨어 목수

Pythonista와 같은 코드:관용 파이썬

Python 관용구 및 효율성

구글 개발자의 날 미국 - 파이썬 디자인 패턴

다른 리소스는 예를 들어 Python Recipes에 있습니다.많은 수가 모범 사례를 따르지 않지만 유용한 패턴을 찾을 수 있습니다.

유형

>>> import this

Python 콘솔에서.

이것은 보통 (fine!) 농담으로 취급되지만, 몇 가지 유효한 파이썬 고유 공리를 포함하고 있습니다.

Bruce Eckel의 Python에서의 생각은 디자인 패턴에 크게 의존합니다.

여기와 여기에서 시작할 수 있습니다.

설계 패턴에 대한 자세한 내용은 설계 패턴을 참조하십시오. 재사용 가능한 객체 지향 소프트웨어의 요소입니다.소스 코드는 파이썬에 없지만 패턴을 이해하기 위해 필요한 것은 아닙니다.

존재하거나 존재하지 않을 수 있는 객체의 속성을 호출할 때 코드를 단순화하는 데 사용할 수 있는 것은 Python Cookbook에서 소개Null 객체 설계 패턴을 사용하는 것입니다.

Null 개체의 목표는 Python에서 자주 사용되는 원시 데이터 유형 None 또는 다른 언어에서 Null(또는 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()

잊어버려요.광범위한 사용을 주의하십시오.Null개체는 잠재적으로 코드의 버그를 숨길 수 있습니다.

동적 객체 지향 언어(예: Python)의 디자인 패턴에 대해 설명하는 이 기사(.pdf 파일 선택)를 읽고 싶을 수도 있습니다.페이지 인용하기

이 논문은 동적이고 고차적인 객체 지향 프로그래밍 언어를 사용하여 유사한 문제를 해결할 때 종종 "Gang of Four" 또는 "GOF" 책의 패턴이 어떻게 나타나는지 탐구합니다.어떤 패턴은 사라집니다. 즉, 언어 기능에 의해 직접 지원되고, 어떤 패턴은 더 단순하거나 다른 초점을 가지며, 어떤 패턴은 본질적으로 변하지 않습니다.

언급URL : https://stackoverflow.com/questions/606448/python-design-patterns