본문 바로가기

PYTHON

(4)
[Python OOP] Python에서의 객체(Object)와 타입 힌트 본 포스팅은 책 "Python 객체지향 프로그래밍 4판"의 내용을 정리한 글입니다 이번 포스팅에서는 Python에서의 객체와 타입 힌트에 대해서 알아보려고 한다. 우선 Python에서는 객체(Object)를 어떻게 정의하고 있을까? 한마디로 정의하자면, Python의 모든 것은 객체이다. str_variable_example = "hello world" print(type(str_variable_example)) # str값을 가진 변수를 선언하고 내장 함수인 type()을 이용하여 타입을 출력하는 간단한 코드이다. 첫번째 줄에서 "hello world"라는 문자열을 str_variable_example 변수로 선언하고 출력하면 다음과 같은 결과가 출력된다. 즉, str class의 인스턴스로서 "hel..
[Python] easydict 사용하기 Python의 기본 내장 자료형인 Dictionary와 다르게, EasyDict 라이브러리를 이용하면 Dictionary의 Value를 마치 속성처럼 접근할 수 있다. 기본 Dictionary를 이용할 경우, 선언과 사용은 다음과 같다. example_dict = {"name": "suin", "age": 24} # 선언 print(example_dict["name"]) # suin print(example_dict["age"]) # 24 반면에, easydict 라이브러리를 이용하는 경우, 다음과 같이 선언하고 사용할 수 있다. from easydict import EasyDict example_easydict = EasyDict({"name": "suin", "age": 24}) # 선언 print(..
[MeMind 리팩토링] 2. OCP 원칙 적용하기 ▽ SRP 원칙을 적용하는 과정은 이전 포스팅을 참고해주세요!! ▽ [MeMind 리팩토링] 1. SRP 원칙 적용하기 비즈니스 로직을 포함하는 Service 디렉토리의 코드에 SRP 원칙 (단일 책임 원칙)을 적용해보려고 한다. 1. 기존 코드 분석 # service/talk.py """ ChatGPT와의 API 통신을 통해 대화하는 로직 """ from fastapi impo it-is-my-life.tistory.com 1. 기존 코드 분석 이전 포스팅에서 SRP 원칙까지 적용 완료된 코드의 가장 큰 문제점은 비슷한 일을 하는 클래스들이 너무 많다는 것이다. # 월별 Conversation 조회 class MonthlyConversationLoader: def __init__(self, sessio..
[FastAPI] SQLModel에서 default와 default_factory 옵션의 차이점 sqlmodel을 이용해서 데이터베이스 모델을 구현하고 있었는데, 날짜 값이 입력되지 않을 경우에 datetime 함수를 실행해서 자동으로 날짜를 채우도록 필드에 default 옵션을 줬는데도 불구하고 날짜가 업데이트 되지 않고 어느 한 날짜로 계속 고정이 되어 있는 문제가 발생했다. 문제는 바로 이 default 옵션에 있었다. 내 코드 중 문제가 되는 부분으로 살펴보자. class Conversation(SQLModel, table = True): nickname: str = Field(foreign_key = User.nickname) conversation_id: str = Field(default = None, primary_key = True) day: Optional[int] = Field(..