📍 매직메소드 중 __str__ 메소드와 __repr__ 메소드의 공통점과 차이점
공통점
객체를 문자열로 반환함 : 객체가 어떤 타입을 가졌던 간에 그것을 문자열로 반환
차이점
__str__ 메소드
: interface로서의 역할을 수행하기 위해 존재
서로 다른 타입을 가진 데이터끼리 상호작용할 때 문자열로 반환시킴으로서 상호간의 호환이 가능하도록 함
즉, 사용자에 좀 더 초점이 맞춰져있음
쉽게 말해 print() 함수를 떠올리면 된다.
사실 print() 함수는 단순히 출력만 하는 기능이 아닌, 터미널 창에 문자로 보이게 출력해주는 기능이다.
즉, a = 1 을 출력하면 a의 실제 타입은 int지만, 터미널에 보여지는 1은 사실 문자임
사용자가 보기 편하도록 문자로 모두 변환해서 출력하는 것임.
(bc) print는 내부적으로 str 메소드를 호출함.
__repr__ 메소드
: 객체를 문자열로 표현하기 위해 존재하는 메소드지만 개발자에 초점이 맞춰져있음.
__repr__의 반환 값은 eval 함수에 사용 가능하며 이를 활용하여 새로운 객체를 만들어 내는 것도 가능
(단, __str__ 메소드의 반환 값은 eval 함수에 사용할 수 없음)
🫧 오늘 배운 매직메소드 내용 정리
__dict__
: 객체의 속성을 딕셔너리로 반환함. 딕셔너리의 key 는 객체의 어트리뷰트이고 value 는 어트리뷰트의 값이다.
__dir__
: 모든 메서드와 어트리뷰트를 보여줌
__init__
: 생성자를 호출하여 클래스의 새 인스턴스를 생성할 때 실행됨 (클래스 만들 때, 가장 상단에 작성하는 듯함, 생성할 인스턴스의 속성을 나타내니까 이 클래스가 어떤 용도인지 바로 알 수 있을 것 같아서?)
__doc__
: 클래스나 함수 내부의 apostrophe(’)에 담긴 내용들을 나타내줌. (만약 파이썬에 이미 정의되어 있는 메소드를 doc로 호출할 경우, 파이썬에서 docstring으로 작성한 내용들이 나타남. 내 생각엔 이게 함수 사용설명서 같은 느낌임.)
📁추가 내용
id(_) 함수
매직메소드는 아니지만 오늘 수업에서 id() 함수를 사용하였는데, 이것은 객체의 ID를 가져오는 함수임
즉, ID를 통해 어떤 객체를 가리키는지 확인할 수 있음.
또, 클래스에도 id가 존재하는데 추후 부모클래스/자식클래스를 공부할 때, 클래스 종류가 많아지면, 생김새로는 구분하기 어려울 수 있기 때문에, 이떄 id()함수를 사용한다고보스가 말씀하심.
id는 파이썬이 객체를 구별하기 위해서 부여하는 일련번호일 뿐, 숫자로서 의미는 없음
'파이썬 > 파이썬 심화' 카테고리의 다른 글
인스턴스, 클래스, 정적메서드 (0) | 2024.08.05 |
---|---|
객체지향 프로그래밍 (0) | 2024.07.30 |