파이썬 디자인 패턴
Python을 사용하여 모범 사례, 디자인 패턴 및 SOLID 원칙의 예를 제공하는 모든 리소스를 찾고 있습니다.
이 중 일부는 겹칩니다
미국 Google 개발자의 날-Python 디자인 패턴
또 다른 리소스는 Python Recipes에 있습니다. 좋은 숫자는 모범 사례를 따르지 않지만 유용한 패턴이 있습니다.
유형
>>> import this
파이썬 콘솔에서.
이것은 일반적으로 (괜찮아!) 농담으로 취급되지만 몇 가지 유효한 파이썬 특정 공리를 포함합니다.
Bruce Eckel의 "Pink에서 생각하기 "는 디자인 패턴에 크게 의존합니다.
디자인 패턴 에 대해 자세히 살펴 보려면 디자인 패턴 : 재사용 가능한 객체 지향 소프트웨어의 요소를 살펴보십시오 . 소스 코드는 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()
and forget about it. Beware that extensive use of the Null
object can potentially hide bugs in your code.
You may also wish to read this article (select the .pdf file), which discusses Design Patterns in dynamic object oriented languages (i.e. Python). To quote the page:
This paper explores how the patterns from the "Gang of Four", or "GOF" book, as it is often called, appear when similar problems are addressed using a dynamic, higher-order, object-oriented programming language. Some of the patterns disappear -- that is, they are supported directly by language features, some patterns are simpler or have a different focus, and some are essentially unchanged.
참고URL : https://stackoverflow.com/questions/606448/python-design-patterns
'Programing' 카테고리의 다른 글
“#pragma comment”는 무엇을 의미합니까? (0) | 2020.05.31 |
---|---|
누구나 Laravel 5.2 다중 인증을 설명 할 수 있습니까? (0) | 2020.05.31 |
파이썬 NumPy에서 np.mean () 대 np.average ()? (0) | 2020.05.31 |
파이썬에서 목록을 반복 (0) | 2020.05.31 |
나침반이란 무엇입니까, Sass는 무엇입니까 ... 어떻게 다른가? (0) | 2020.05.31 |