가이드라인

클래스의 특수 메서드

파이썬에서 특수 메서드(Special Methods)는 클래스 내부에서 미리 정의된 특별한 메서드로, 객체의 동작을 정의하고 파이썬의 내장 함수와의 상호작용을 돕습니다.

이 메서드들은 매직 메서드(Magic method)라고도 불리며, 밑줄 2개(__, )로 시작하고 끝납니다.

예를 들어 (__str__)로 객체를 문자열로 표현하거나, (__eq__)로 두 객체를 비교하는 등의 작업을 수행할 수 있습니다.


특수 메서드 사용 예시

아래 코드 예시는 __str____eq__ 특수 메서드를 사용해 Book 클래스를 정의합니다.

__str__ 메서드는 객체의 문자열 표현을 정의하는 특수 메서드로, print 함수나 str 함수로 객체를 문자열로 변환할 때 호출됩니다.

일밙적으로 __str__ 메서드는 객체의 정보를 사람이 읽기 좋은 형식으로 나타내기 위해 사용합니다.

__eq__ 메서드는 객체의 동등성 비교를 정의하는 특수 메서드로, 두 객체를 비교하는 == 연산자를 호출할 때 실행됩니다.

__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__ 메서드는 두 객체의 titleauthor가 같은지 비교합니다.

위와 같은 Book 클래스는 아래와 같이 사용할 수 있습니다.

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, book3Book 클래스의 인스턴스입니다.

__str__ 메서드를 정의하면 print(book1)과 같이 객체를 출력할 때 사람이 읽기 좋은 형식으로 출력할 수 있습니다.

__eq__ 메서드를 정의하면 book1 == book2와 같이 두 객체를 비교할 때 titleauthor가 같은지 비교할 수 있습니다.


특수 메서드는 어떤 것이 있을까요?

  • __str__(self): 객체를 문자열로 표현할 때 사용됩니다. print() 함수나 str() 함수가 호출될 때 실행됩니다.

  • __eq__(self, other): == 연산자를 재정의하여 객체 간의 동등성 비교를 정의합니다.

  • __ne__(self, other): != 연산자를 재정의하여 객체 간의 차이점을 비교합니다.

  • __gt__(self, other): > 연산자를 재정의하여 객체 간의 크기 비교를 정의합니다.

  • __ge__(self, other): >= 연산자를 재정의하여 객체 간의 크기 비교를 정의합니다.

  • __lt__(self, other): < 연산자를 재정의하여 객체 간의 크기 비교를 정의합니다.

  • __le__(self, other): <= 연산자를 재정의하여 객체 간의 크기 비교를 정의합니다.

Mission
0 / 1

특수 메서드는 클래스 내부에서 미리 정의된 특별한 메서드로, 객체의 동작을 정의하고 파이썬의 내장 함수와의 상호작용을 돕는다.

O
X

가이드라인

AI 튜터

배포

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행
코드 생성

실행 결과