본문 바로가기
Python/객체지향 및 자료구조

__str__ 메소드

by hooni40 2021. 5. 10.
728x90
반응형

안녕하세요, 개발자를 꿈꾸는 직장인입니다.

오늘은 __str__ 메소드에 대해 정리하려 합니다.

 

 

먼저 필요한 상황을 보여드리고 정리해보겠습니다.

 

class User:
  def __init__(self, name, email, pw):
    self.name = name
    self.email = email
    self.pw =pw
  
  def say_hello(self):
    print("안녕하세요! 저는 {}입니다".format(self.name))


user1 = User("hoon","hoon@naver.com","123")
user2 = User("minsu","ms@naver.com","1234")

 

위 코드에서 user1/user2를 print 해보겠습니다.

 

 

출력 값에서 User는 class를 나타내는 것이고 뒤에 0x 어쩌고 저쩌고는 인스턴스가 저장된 메모리를 나타냅니다!

이 값들을 우리가 보기 좋게(?) 출력하도록 만드는 역할을 하는 메소드가 바로 __str__입니다!

요함수도 이전 시간에 정리하였던 __init__과 마찬가지로 특수 메소드입니다.

__init__이 인스턴스 생성 시 자동 실행되듯, 특수 메서드는 특정 상황에서 자동으로 실행이 되는데요,

 

__str__은 인스턴스가 print의 함수로 호출될 때 자동 실행됩니다!

즉, 어떠한 인스턴스 출력 시 자동으로 __str__의 return값이 출력됩니다!

 

class User:
  def __init__(self, name, email, pw):
    self.name = name
    self.email = email
    self.pw =pw
  
  def say_hello(self):
    print("안녕하세요! 저는 {}입니다".format(self.name))

  def __str__(self):
    return "사용자: {}, 이메일: {}".format(self.name, self.email)


user1 = User("hoon","hoon@naver.com","123")
user2 = User("minsu","ms@naver.com","1234")

 

위와 같이 __str__ 메소드 추가 후 print를 사용해 보겠습니다.

 

 

인스턴스를 출력하였는데 __str__의 return값이 출력된 것을 확인할 수 있습니다!

코드가 실행되는 순서를 간단히 정리하겠습니다.

 

1. print(user1)이 실행

2. user1 인스턴스가 출력이 되었으므로 해당 인스턴스의 __str__메소드가 호출됩니다.

3. user1의 self.name , self.email이 format을 통해 각각 들어가서 실행되는 것을 확인하실 수 있습니다!

 

♠블로그를 시작한 지 한 달이 안되었지만 많은 것을 배웠다는 것을 스스로 많이 깨닫고 있습니다.

이전까지는 파이썬을 겉핥기 식으로만 공부한 것처럼 느껴져 제가 우물 안의 개구리였다고 생각될 정도로요 ㅎㅎ

앞으로 한 달 두 달 꾸준히 공부하여 내년 꼭 개발자로 이직에 성공해 보겠습니다!

728x90
반응형

'Python > 객체지향 및 자료구조' 카테고리의 다른 글

가변 타입 / 불변 타입  (0) 2021.07.04
클래스 메소드  (0) 2021.07.03
__init__ 메소드  (0) 2021.05.08
인스턴스 메소드 / 변수  (0) 2021.05.07
객체(인스턴스)/객체 지향 프로그래밍  (0) 2021.05.06

댓글