본문 바로가기

전체 글

(98)
[디자인 패턴] 어댑터 패턴 (Adapter Pattern) - python 예제 코드 어댑터 패턴(Adapter Pattern)은 서로 다른 두 개의 인터페이스를 가진 클래스들 간의 상호작용을 가능하게 해주는 디자인 패턴 중 하나입니다. 1. 핵심 아이디어 어댑터 패턴의 핵심 아이디어는 기존 클래스를 수정하지 않고, 그 클래스의 인터페이스를 다른 인터페이스로 변환시켜주는 것입니다. 이렇게 하면, 기존 클래스와 새로운 클래스 간의 호환성을 유지하면서, 코드를 재사용할 수 있게 됩니다. 파이썬으로 어댑터 패턴을 구현할 때는, 일반적으로 클래스를 상속하여 새로운 클래스를 만들어서 구현합니다. 이때, 새로운 클래스는 새로운 인터페이스를 구현하면서, 기존 클래스의 인스턴스를 내부에 포함시키는 방식으로 작성합니다. 2. 예제코드 다음은 파이썬으로 어댑터 패턴을 구현한 코드 예제입니다. class T..
[디자인 패턴] 싱글턴 패턴 (Singleton Pattern) - python 예제 코드 싱글턴 패턴(Singleton Pattern)은 객체 생성에 대한 디자인 패턴 중 하나입니다. 이 패턴은 어떤 클래스를 단 하나의 인스턴스만 생성하도록 보장하며, 해당 인스턴스를 전역에서 접근 가능하게 합니다. 1. 구현 방법 싱글턴 패턴을 구현하는 방법은 다양하지만, 대표적으로는 클래스 내부에 인스턴스 변수를 선언하고, 해당 클래스의 생성자 메서드를 private로 만드는 것입니다. 그리고 클래스 내부에서는 해당 클래스의 인스턴스가 생성되어있는지 확인하고, 생성되어 있지 않으면 인스턴스를 생성하는 정적 메서드를 제공합니다. 2. 예제 코드 다음은 파이썬으로 구현한 싱글턴 패턴 예제입니다. class Singleton: __instance = None # 클래스 내부에 유일한 인스턴스를 저장할 클래스 변..
[디자인 패턴] 프로토타입 패턴 (Prototype Pattern) - python 예제 코드 프로토타입 패턴 (Prototype Pattern) 은 객체 생성의 비용이 높은 경우, 기존에 생성된 객체를 복제하여 새로운 객체를 생성하는 패턴입니다. 이를 통해 객체 생성에 대한 비용을 줄일 수 있습니다. 1. 필요한 상황 1) 객체 생성에 필요한 자원이 많은 경우 2) 생성되는 객체의 종류가 다양한 경우 3) 객체 생성 과정이 복잡한 경우 2. 예제 파이썬에서는 객체를 복제하기 위해 copy 모듈을 사용할 수 있습니다. 이를 활용하여 간단한 프로토타입 패턴을 구현해보겠습니다. import copy class Prototype: def __init__(self): self._objects = {} def register_object(self, name, obj): self._objects[name] ..
[디자인 패턴] 빌더 패턴 (Builder Pattern) - python 예제 코드 빌더 패턴 (Builder Pattern) 은 객체를 생성하는 과정을 단순화하고, 유연성을 높여주는 디자인 패턴입니다. 이 패턴은 객체를 생성하는 과정을 단계별로 나누어 처리하며, 이 단계들을 조합하여 객체를 생성합니다. 빌더 패턴은 생성자의 매개변수가 많아지거나 객체 생성 과정이 복잡해지는 경우 유용하게 사용됩니다. 1. 예제 코드 class User: def __init__(self): self.username = None self.password = None self.email = None self.first_name = None self.last_name = None def __str__(self): return f"username: {self.username}, password: {self.pa..
[디자인 패턴] 추상 팩토리 패턴 (Abstract Factory Pattern) - python 예제 코드 추상 팩토리 패턴(Abstract Factory Pattern) 은 객체 생성에 관련된 문제를 해결하기 위한 디자인 패턴 중 하나입니다. 이 패턴은 관련성이 있는 여러 개의 객체들을 일관된 방식으로 생성하는 방법을 제공합니다. 1. 추상 팩토리 패턴의 주요 개념 1) 추상 팩토리 (Abstract Factory) 인터페이스를 정의하여 객체 생성을 추상화한 팩토리입니다. 클라이언트는 추상 팩토리를 통해 객체를 생성합니다. 구체적인 팩토리가 이 추상 팩토리를 구현하여 실제 객체 생성을 담당합니다. 2) 구체적인 팩토리 (Concrete Factory) 추상 팩토리를 구현하여 실제 객체 생성을 담당하는 클래스입니다. 구체적인 팩토리는 특정한 객체들을 생성합니다. 3) 추상 제품 (Abstract Product..
[디자인 패턴] 팩토리 메서드 패턴 (Factory Method Pattern) - python 예제 코드 팩토리 메서드 패턴(Factory Method Pattern)은 객체 생성에 관한 디자인 패턴 중 하나입니다. 이 패턴은 객체 생성을 서브 클래스에게 위임하여 유연하게 객체를 생성하는 것을 목적으로 합니다. 1. 설명 어떤 클래스에서 객체를 생성해야 할 때, 그 클래스가 직접 객체를 생성하는 것이 아니라, 객체 생성을 위한 팩토리 메서드를 제공하여, 서브 클래스에서 해당 메서드를 오버라이드하고 적절한 객체를 생성할 수 있도록 합니다. 이를 통해 클래스의 인스턴스 생성 로직을 별도의 클래스로 분리하고 유연성을 확보할 수 있습니다. 2. 예제코드 Python 코드 예제를 통해 팩토리 메서드 패턴을 이해해보도록 하겠습니다. 예를 들어, 간단한 계산기를 만들어 본다고 가정해봅시다. 계산기에는 덧셈, 뺄셈, 곱셈..
파이썬(Python) statistics 사용법 정리 Python의 statistics 라이브러리는 데이터 분석에 유용한 여러 함수를 제공합니다. 아래는 주요 함수들과 사용 예시입니다. 1. mean(data) 평균을 계산합니다. import statistics data = [1, 2, 3, 4, 5] mean_value = statistics.mean(data) print(mean_value) 2. median(data) 중앙값을 계산합니다. import statistics data = [1, 2, 3, 4, 5] median_value = statistics.median(data) print(median_value) 3. mode(data) 최빈값을 계산합니다. (최빈값이 여러 개일 경우 첫 번째 값만 반환합니다.) import statistics da..
파이썬(Python)의 인자목록 언패킹(unpacking) 에 대해서 Python에서 함수를 정의할 때 인자 목록 언패킹(unpacking)은 함수에 전달되는 인자들 중에서 리스트, 튜플, 딕셔너리 등과 같은 iterable 객체를 개별적인 인자로 분리하여 전달하는 것을 말합니다. 인자 언패킹은 * 또는 **를 사용하여 구현됩니다. *은 리스트나 튜플 등의 iterable 객체를 인자 목록 언패킹하여 개별적인 인자로 분리합니다. **는 딕셔너리 객체를 인자 목록 언패킹하여 개별적인 키-값 쌍으로 분리합니다. 1. 언패킹을 사용한 함수 정의의 예시 def my_function(*args, **kwargs): print("Positional arguments:") for arg in args: print(arg) print("\nKeyword arguments:") for k..