Python을 사용하여 모범 사례, 디자인 패턴 및 SOLID 원칙의 예를 제공하는 리소스를 찾고 있습니다.
Python을 사용하여 모범 사례, 디자인 패턴 및 SOLID 원칙의 예를 제공하는 리소스를 찾고 있습니다.
답변:
이 중 일부는 겹칩니다
미국 Google 개발자의 날-Python 디자인 패턴
또 다른 리소스는 Python Recipes에 있습니다. 좋은 숫자는 모범 사례를 따르지 않지만 유용한 패턴이 있습니다.
디자인 패턴 에 대해 자세히 살펴 보려면 디자인 패턴 : 재사용 가능한 객체 지향 소프트웨어의 요소를 살펴보십시오 . 소스 코드는 Python이 아니지만 패턴을 이해할 필요는 없습니다.
존재하거나 존재하지 않을 수있는 객체에서 속성을 호출 할 때 코드를 단순화하기 위해 사용할 수있는 것은 Null 객체 디자인 패턴 ( Python Cookbook 에서 소개 된 )을 사용하는 것입니다.
대략 Null 객체의 목표는 Python에서 자주 사용되는 기본 데이터 형식 None 또는 다른 언어의 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"책의 패턴이 동적, 고차, 객체 지향 프로그래밍 언어를 사용하여 유사한 문제를 해결할 때 나타나는 방식을 살펴 봅니다. 일부 패턴은 사라집니다. 즉 언어 기능에 의해 직접 지원되고 일부 패턴은 더 단순하거나 다른 초점을 가지며 일부는 본질적으로 변경되지 않습니다.