Guidelines

클래슀의 특수 λ©”μ„œλ“œ

νŒŒμ΄μ¬μ—μ„œ 특수 λ©”μ„œλ“œ(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__ λ©”μ„œλ“œλŠ” 두 객체의 titleκ³Ό authorκ°€ 같은지 λΉ„κ΅ν•©λ‹ˆλ‹€.

μœ„μ™€ 같은 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, 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): <= μ—°μ‚°μžλ₯Ό μž¬μ •μ˜ν•˜μ—¬ 객체 κ°„μ˜ 크기 비ꡐλ₯Ό μ •μ˜ν•©λ‹ˆλ‹€.

Mission
0 / 1

특수 λ©”μ„œλ“œλŠ” 클래슀 λ‚΄λΆ€μ—μ„œ 미리 μ •μ˜λœ νŠΉλ³„ν•œ λ©”μ„œλ“œλ‘œ, 객체의 λ™μž‘μ„ μ •μ˜ν•˜κ³  파이썬의 λ‚΄μž₯ ν•¨μˆ˜μ™€μ˜ μƒν˜Έμž‘μš©μ„ λ•λŠ”λ‹€.

O
X

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help

Code Editor

Run
Generate

Execution Result