from __future__ import annotations
Forward reference를 해결해 주는 친구!
회사에서 typing을 할 때 항상 임포트 해 온 뒤에 작업하시는 걸 봤는데, 찾아보니 아래와 같은 경우를 해결할 때 필요한 것이었다.
class Example:
# 자기자신을 참조하는 경우
def name(self, a: Example):
...
# 코드 순서상 아래에 있는 클래스를 참조하는 경우
def address(self, b: Other):
...
class Other:
...
단어 그대로 '얼어 붙은' set 데이터라고 생각하면 쉽다. 한 번 생성되고 나면 immutable하기 때문에 튜플처럼 값 변경이 불가능하다.
멀티쓰레드 기반 동시/병렬 프로세싱이 발달하면서, 여러 쓰레드가 동시에 데이터를 변경하게 되면 버그가 발생할 수 있음.
파이썬에서는 프로그램 실행 중에 데이터가 변경되는 것을 막기 위해 tuple, namedtuple, frozenset 등의 타입 제공
파이썬의 불변(immutable) 자료구조 - DaleSeo
Expire & Refresh : all un-flushed changes on an object are discarded
persistent layer 상에서 발생한 변화들을 리셋하는 것
user = session.query(User).filter_by(name="user1").first()
user.name = "user2"
session.expire(user)
user.name
>>> 'user1'
어떤 에러도, 이슈도, 엣지 케이스도 없이 테스트가 정확히 원하는 결과 상황을 만드는 것