오늘 한 일 (회고)
1. 백준 알고리즘 문제 풀이
- 4673
2. 기본
- 프로젝트를 진행하면서 이것저것 구글을 검색하면서 찾아보면서 만들던 중 기본이 너무 부족한 것으로 생각되어 내가 사용하는 내용 중에 이해가 안 되는 모든 내용을 찾아보면서 다시 복습함
- 내용 요약
- 파이썬 매직 메서드(던더 메서드)
파이썬에서는 객체에서 불러올 수 있는 메서드 중
__메서드 이름__이런 식으로 더블 언더스코어가 양쪽으로 붙어있는 메서드들이 있음
이것은 매직 메소드 (혹은 스페셜 메서드, 혹은 던더 메서드)라고 함
이런 내용만 봐서는 잘 이해가 되지 않아서 의문이 계속 생겼었는데 아주 쉽게 아무런 프로그래밍적인 기본이 없는 사람도 이해할 수 있게 설명하자면 프로그래밍 문법을 이용하여 특정 타입이나 문자열의 배 열등을 이용하여 우리들은 method를 이용하고 있는 것임
예를 들면 간단한 덧셈 관련 문법이 있다고 할 때 a+b를 하면 여기서 처음으로 배치되어있는 a가 int형태로 되어있는 문자라고 할 때 int가 사용할 수 있는 method가 여러 가지가 있는데 그중 __add__라는 method를 +와 같이 우리가 일반적으로 사용하는 연산자에 연결하여 +가 나오면 __add__를 하자고 약속을 해놓은 상태라고 생각하면 됨
이랬을 때 a.__add__()가 되고 괄호 안에 숫자는 +다음에 오는 숫자가 들어가게 되어 a.__add__(b) 최종적으로 이런 모습으로 실행이 되게 됨
이렇듯 형식 또는 객체에 따라 다른 매직 메서드를 가지고 있는데 이것은 print(dir(int)) 을 이용하여 확인 가능함
간단한 설명이었고 매직 메소드를 사용하는 것을 더욱 쉽게 풀어 설명하면 이미 만들어져 있는 파이썬 오퍼레이터에 대한 오버 로딩을 구현할 수 있도록 도움
이렇게만 보면 말이 어려워서 한번 더 풀어 말하자면 입력받은 값에 대한 정해진 규칙을 변경해줄 수 있음
추가 예제
class MyStr(str):
#as_array는 self를 한 letter씩 쪼갠 값들을 가진다
def __init__(self, as_array):
self.as_array = list([_ for _ in self])
def __setitem__(self, index, value):
self.as_array[index] = str(value)
def __str__(self):
return ''.join(self.as_array)
x = MyStr('Good Evening!')
print(x)
x[5:] = 123456789
print(x)
x[5:] = 'Morning~!'
print(x)
print(x.lower())
# Good Evening!
# Good 123456789
# Good Morning~!
# good evening!
내일 할 일
1. 백준 알고리즘 문제 풀기
2. 장바구니 조각 기능 구현 완성
3. iamport 사용방법 숙지
'TIL' 카테고리의 다른 글
220318_TIL (0) | 2022.03.18 |
---|---|
3-17[Project, iamport] 결제기능 구현 준비 (0) | 2022.03.17 |
3-15[Project] 장바구니 기능 구현 학습중 (0) | 2022.03.15 |
3-14[mypy] 데코레이터 인식 안되는 경우 (0) | 2022.03.14 |
3-13[Project] 장바구니 기능 구현 학습중 (0) | 2022.03.13 |