클래스의 특수 메서드
파이썬에서 특수 메서드(Special Methods)
는 클래스 내부에서 미리 정의된 특별한 메서드로, 객체의 동작을 정의하고 파이썬의 내장 함수와의 상호작용을 돕습니다.
이 메서드들은 매직 메서드(Magic method)
라고도 불리며, 밑줄 2개(__
, )로 시작하고 끝납니다.
예를 들어 (__str__)
로 객체를 문자열로 표현하거나, (__eq__)
로 두 객체를 비교하는 등의 작업을 수행할 수 있습니다.
특수 메서드 사용 예시
아래 코드 예시는 __str__
과 __eq__
특수 메서드를 사용해 Book
클래스를 정의합니다.
__str__
메서드는 객체의 문자열 표현을 정의하는 특수 메서드로, print
함수나 str
함수로 객체를 문자열로 변환할 때 호출됩니다.
일밙적으로 __str__
메서드는 객체의 정보를 사람이 읽기 좋은 형식으로 나타내기 위해 사용합니다.
__eq__
메서드는 객체의 동등성 비교를 정의하는 특수 메서드로, 두 객체를 비교하는 ==
연산자를 호출할 때 실행됩니다.
# 클래스 Book 정의 class Book: # 초기화 메서드 def __init__(self, title, author): self.title = title # 책 제목 self.author = author # 저자 이름 # __str__ 메서드: 객체를 사람이 읽기 좋은 문자열로 변환 def __str__(self): return f"{self.title} by {self.author}" # 문자열 포맷팅으로 반환 # __eq__ 메서드: 두 객체가 같은지 비교 (title과 author 기준) def __eq__(self, other): # 두 객체의 title과 author가 같으면 True, 아니면 False return self.title == other.title and self.author == other.author print(book1 == book3) # False
이 예제에서 __str__
메서드는 객체를 사람이 읽기 좋은 문자열로 변환하고, __eq__
메서드는 두 객체의 title
과 author
가 같은지 비교합니다.
위와 같은 Book
클래스는 아래와 같이 사용할 수 있습니다.
# Book 객체 생성 book1 = Book("해리포터", "J.K. 롤링") book2 = Book("해리포터", "J.K. 롤링") book3 = Book("반지의 제왕", "J.R.R. 톨킨") # __str__ 메서드 예시: 객체를 print할 때 사람이 읽기 좋은 형식으로 출력 print(book1) # "해리포터 by J.K. 롤링" 출력 # __eq__ 메서드 예시: 객체 비교 print(book1 == book2) # True, 두 객체의 title과 author가 동일 print(book1 == book3) # False, 다른 title과 author # Book 객체를 리스트로 관리 book_list = [book1, book2, book3] # 리스트에 있는 책 정보 출력 (모든 객체에 __str__ 메서드가 적용됨) for book in book_list: print(book) # 결과: # 해리포터 by J.K. 롤링 # 해리포터 by J.K. 롤링 # 반지의 제왕 by J.R.R. 톨킨
위 코드에서 book1
, book2
, book3
는 Book
클래스의 인스턴스입니다.
__str__
메서드를 정의하면 print(book1)
과 같이 객체를 출력할 때 사람이 읽기 좋은 형식으로 출력할 수 있습니다.
__eq__
메서드를 정의하면 book1 == book2
와 같이 두 객체를 비교할 때 title
과 author
가 같은지 비교할 수 있습니다.
특수 메서드는 어떤 것이 있을까요?
-
__str__(self)
: 객체를 문자열로 표현할 때 사용됩니다.print()
함수나str()
함수가 호출될 때 실행됩니다. -
__eq__(self, other)
:==
연산자를 재정의하여 객체 간의 동등성 비교를 정의합니다. -
__ne__(self, other)
:!=
연산자를 재정의하여 객체 간의 차이점을 비교합니다. -
__gt__(self, other)
:>
연산자를 재정의하여 객체 간의 크기 비교를 정의합니다. -
__ge__(self, other)
:>=
연산자를 재정의하여 객체 간의 크기 비교를 정의합니다. -
__lt__(self, other)
:<
연산자를 재정의하여 객체 간의 크기 비교를 정의합니다. -
__le__(self, other)
:<=
연산자를 재정의하여 객체 간의 크기 비교를 정의합니다.
특수 메서드는 클래스 내부에서 미리 정의된 특별한 메서드로, 객체의 동작을 정의하고 파이썬의 내장 함수와의 상호작용을 돕는다.
가이드라인
AI 튜터
배포
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
실행 결과