class는 객체를 만드는 새 타입을 정의해
클래스를 호출하면 먼저 __new__가 인스턴스를 만들고 __init__이 그 인스턴스의 초기 상태를 세워. 보통은 __init__만 직접 작성하면 돼.
self는 현재 수신자야
메서드를 obj.method(x)로 호출하면 Python이 obj를 첫 인자 self로 묶어. 클래스에서 함수를 직접 꺼내 호출하면 그 인스턴스를 명시해야 하므로 “bound method”의 정체가 보여.
각 인스턴스는 자기 상태를 가진다
같은 클래스에서 만든 객체도 __init__에서 self에 저장한 값은 서로 달라. 객체는 그 상태를 지키는 메서드와 불변조건을 한 경계에 모을 때 값어치를 해.