연산자 오버로딩: 문자열 표현

Python의 객체 지향 프로그래밍

Alex Yarosh

Content Quality Analyst @ DataCamp

객체 출력

class Customer:
  def __init__(self, name, balance):
    self.name, self.balance = name, balance 

cust = Customer("Maryam Azar", 3000)
print(cust)
<__main__.Customer at 0x1f8598e2240>

 

import numpy as np

arr = np.array([1,2,3])
print(arr)
[1 2 3]
Python의 객체 지향 프로그래밍

__str__()

  • print(obj), str(obj)
print(np.array([1,2,3]))
[1 2 3]
str(np.array([1,2,3]))
[1 2 3]
  • 비공식, 최종 사용자용
  • 문자열(string) 표현

__repr__()

  • repr(obj), 콘솔 출력
repr(np.array([1,2,3]))
array([1,2,3])
np.array([1,2,3])
array([1,2,3])
  • 공식적, 개발자용
  • 재현 가능한(reproducible) 표현
  • print()의 폴백
Python의 객체 지향 프로그래밍

구현: str

class Customer:
  def __init__(self, name, balance):
    self.name, self.balance = name, balance 

  def __str__(self):
    cust_str = """
    Customer:
      name: {name}
      balance: {balance}
    """.format(name = self.name, \
               balance = self.balance)
    return cust_str

cust = Customer("Maryam Azar", 3000)

# __str__()가 암묵적으로 호출됨
print(cust)
Customer:
  name: Maryam Azar
  balance: 3000

Python의 객체 지향 프로그래밍

구현: repr

class Customer:
  def __init__(self, name, balance):
    self.name, self.balance = name, balance 

  def __repr__(self):
    # name 주위의 '...'에 주목
    return "Customer('{name}', {balance})".format(name = self.name, balance = self.balance)

cust = Customer("Maryam Azar", 3000) cust # <--- # __repr__()가 암묵적으로 호출됨
Customer('Maryam Azar', 3000) # <--- Customer(Maryam Azar, 3000)이 아님
  • __repr__() 출력에서 문자열 인수는 따옴표로 감싸십시오
Python의 객체 지향 프로그래밍

Passons à la pratique !

Python의 객체 지향 프로그래밍

Preparing Video For Download...