안녕하세요, 개발자를 꿈꾸는 직장인입니다.
오늘은 __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을 통해 각각 들어가서 실행되는 것을 확인하실 수 있습니다!
♠블로그를 시작한 지 한 달이 안되었지만 많은 것을 배웠다는 것을 스스로 많이 깨닫고 있습니다.
이전까지는 파이썬을 겉핥기 식으로만 공부한 것처럼 느껴져 제가 우물 안의 개구리였다고 생각될 정도로요 ㅎㅎ
앞으로 한 달 두 달 꾸준히 공부하여 내년 꼭 개발자로 이직에 성공해 보겠습니다!
'Python > 객체지향 및 자료구조' 카테고리의 다른 글
가변 타입 / 불변 타입 (0) | 2021.07.04 |
---|---|
클래스 메소드 (0) | 2021.07.03 |
__init__ 메소드 (0) | 2021.05.08 |
인스턴스 메소드 / 변수 (0) | 2021.05.07 |
객체(인스턴스)/객체 지향 프로그래밍 (0) | 2021.05.06 |
댓글