νμ΄μ¬μ μ€νμ λ©μλ (λλ λ§€μ§ λ©μλλΌκ³ λ λΆλ¦Ό)λ λλΈ μΈλμ€μ½μ΄(__)λ‘ μμνκ³ λλλ λ©μλ μ΄λ¦μ κ°λλ€. μ΄ λ©μλλ€μ νΉμ ꡬ문μ΄λ λ΄μ₯ ν¨μλ₯Ό μ¬μ©ν λ νμ΄μ¬ μΈν°ν리ν°μ μν΄ μλμΌλ‘ νΈμΆλλ€.

class Book:
def __init__(self, title):
self.title = title
book = Book('μ΄λ»κ² νμ€ν°κ° κ°λ°μ')
print(book)
print(str(book)) # print μμ str()μ΄ μλ΅λλ€κ³ λ³Ό μ μλ€. str()μ λ¬Έμμ΄λ‘ λ³νν΄μ£Όλ κΈ°λ₯μ κ°μ§λ§, κ°μ²΄λ₯Ό λ£μΌλ©΄ κ°μ²΄μ μ 보λ₯Ό 보μ¬μ€λ€
> <__main__.Book object at 0x7a2a1eec0220>
> <__main__.Book object at 0x7a2a1eec0220>
class Book:
def __init__(self, title):
self.title = title
def __str__(self): # νμ΄μ¬ λ΄μ str()ν¨μλ₯Ό μ€λ²λΌμ΄λ© (μ΄ ν΄λμ€ νμ )
return self.title
book = Book('μ΄λ»κ² νμ€ν°κ° κ°λ°μ')
print(book)
print(str(book))
> μ΄λ»κ² νμ€ν°κ° κ°λ°μ
> μ΄λ»κ² νμ€ν°κ° κ°λ°μ
li = [1, 2, 3]
print(li) # liλ κ°μ²΄μΈλ° μ λ³΄κ° μλλΌ μμ λ°μ΄ν°κ° μΆλ ₯λ¨. μ¦ listμ ν΄λμ€μ __str__μ 리μ€νΈ μμ μμλ₯Ό μΆλ ₯ν μ μλλ‘ μ€λ²λΌμ΄λ© λΌμμ
print(str(li))
> [1, 2, 3]
> [1, 2, 3]
class Calc:
def __init__(self, num):
self.num = num
def __add__(self, other): # + κΈ°νΈλ₯Ό μ€λ²λΌμ΄λ©
return self.num + other.num
num1 = Calc(5)
num2 = Calc(10)
print(num1 + num2) # κ°μ²΄μ μμ κ° λ§μ
μ΄ κ°λ₯νκ² ν¨
> 15
class Queue:
def __init__(self):
self.items = [1, 2, 3, 4, 5]
def __len__(self): # len() ν¨μ μ€λ²λΌμ΄λ©
return len(self.items)
li = [1, 2, 3, 4, 5]
print(len(li))
> 5
queue = Queue()
print(queue) # str()μ μ€λ²λΌμ΄λ© μν€μ§ μμμ μ λ³΄κ° λμ΄
print(len(queue)) # len() ν¨μλ₯Ό κ°μ²΄μμλ μΈ μ μκ² ν¨
> <__main__.Queue object at 0x7a2a1ebf1810>
> 5
class Queue:
def __init__(self):
self.items = [1, 2, 3, 4, 5]
queue = Queue()
print(queue) # str()μ μ€λ²λΌμ΄λ© μν€μ§ μμμ μ λ³΄κ° λμ΄
print(len(queue))
> TypeError: object of type 'Queue' has no len()
> 3 len()μ μ€λ²λΌμ΄λ© νμ§ μμΌλ©΄ ν΄λμ€ κ°ν
μ lenμ ꡬν μ μμ
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __getitem__(self, index): # μΈλ±μ±ν λ νΈμΆ(μΈλ±μ± μ€λ²λΌμ΄λ©)
if index == 0:
return self.x
elif index == 1:
return self.y
else:
return -1
pt = Point(5, 3)
print(pt[0])
print(pt[1])
print(pt[2])
> 5
> 3
> -1