728x90
2주차 미션: 섹션 2 ~ 3
섹션 3에서는 매직 메소드(Special Method)에 대해 배웠다.
처음 목차에서 매직 메소드를 봤을 때 이런 것도 있었나? 했지만 내가 알고 있는 것이었고 그냥 필요할 때 구글링으로 막 가져다 쓰다보니 정확한 명칭, 개념을 모르는 것이었다.
역시나 코드와 그에 관한 필기는 주석으로 하나의 파일에 작성했다.
섹션 3에서 배운 내용은 다음과 같다.
- 파이썬 핵심 구조 설명
- 매직 메소드 실습
- 클래스 매직 메소드 실습
- 매직 메소드 심화
- 클래스 매직 메소드 실습 코딩
- 데이터 모델 설계
- NamedTuple 설명
- Model Unpacking
- 네임드 튜플 실습 코딩
아래는 강의 내용을 따라 작성한 섹션 3의 최종 코드이다.
# Chapter03
# Special Method(Magic Method)
# 파이썬의 핵심 프레임워크 -> 시퀀스(Sequence), 반복(Iterator), 반복(Functions), 클래스(Class)
# 클래스 안에 정의할 수 있는 특별한(Built-in) 메소드
# Namedtuple 실습
# 객체 -> 파이썬의 데이터를 추상화
# 모든 객체 -> id, type -> value
# 일반적인 튜플
pt1 = (1.0, 5.0)
pt2 = (2.5, 1.5)
from math import sqrt
l_leng1 = sqrt((pt1[0] - pt2[0]) ** 2 + (pt1[1] - pt2[1]) ** 2)
print(l_leng1)
# 네임드 튜플 사용
# 딕셔너리 + 튜플 성질을 가짐
from collections import namedtuple
# 네임드 튜플 선언
Point = namedtuple('Point', 'x y')
pt3 = Point(1.0, 5.0)
pt4 = Point(2.5, 1.5)
# print(pt3)
# print(pt4)
# index, key 둘 다로 접근 가능
l_leng2 = sqrt((pt3.x - pt4.x) ** 2 + (pt3.y - pt4.y) ** 2)
print(l_leng2)
# 네임드 튜플 선언 방법
Point1 = namedtuple('Point', ['x', 'y'])
Point2 = namedtuple('Point', 'x, y')
Point3 = namedtuple('Point', 'x y')
Point4 = namedtuple('Point', 'x y x class', rename = True) # 중요 ⭐
# 중복되는 key, 예약어 사용 -> rename = True로 사용 가능 / Default = False
# 출력
print(Point1, Point2, Point3, Point4) # 클래스로
# Dict to Unpacking
temp_Dict = {'x':75, 'y':55}
# 객체 생성
p1 = Point1(x=10, y=35)
p2 = Point2(20, 40)
p3 = Point3(45, y=20)
p4 = Point4(10, 20, 30, 40) # 중요 ⭐
p5 = Point3(**temp_Dict) # dictionary를 unpacking -> 알아서 mapping
print(p1)
print(p2)
print(p3)
# rename 테스트
print(p4) # 중복되는 key에 대해 알아서 변수를 naming
print(p5)
# 사용
print(p1[0] + p2[1])
print(p1.x + p2.y) # key로 접근
# Unpacking
x, y = p2
print(x, y)
# 네임드 튜플 메소드
temp = [52, 38]
# _make() : 새로운 객체 생성 -> list to namedtuple
p4 = Point1._make(temp)
print(p4)
# _fields : 필드 네임 확인
print(p1._fields, p2._fields, p3._fields) # key값만 조회
# _asdict() : OrderedDict 반환 -> namedtuple to dict
print(p1._asdict())
print(p4._asdict())
# 실 사용 실습
# 반 20명, 4개의 반(A, B, C, D)
Classes = namedtuple('Classes', ['rank', 'number'])
# 그룹 리스트 선언
numbers = [str(n) for n in range(1, 21)]
ranks = 'A B C D'.split()
print(numbers)
print(ranks)
# List Comprehension
students = [Classes(rank, number) for rank in ranks for number in numbers]
print(len(students))
print(students)
# 추천 >> 가독성
students2 = [Classes(rank, number)
for rank in 'A B C D'.split()
for number in [str(n)
for n in range(1, 21)]]
print(len(students2))
print(students2)
# 출력
for s in students2:
print(s)
강의 링크:
728x90
'활동들 > 인프런 대학생 LEAF 2기' 카테고리의 다른 글
[인프런 리프 2기] 5. 파이썬 일급함수 (0) | 2021.03.29 |
---|---|
[인프런 리프 2기] 4. 파이썬 데이터 모델 (0) | 2021.03.29 |
[인프런 리프 2기] 2. 파이썬 클래스 심화 (0) | 2021.03.22 |
[인프런 리프 2기] 0.파이썬 중급 소개 & 커리큘럼 (0) | 2021.03.13 |
[인프런 리프 2기] OT 후기 및 각오 (0) | 2021.03.09 |