지 구 여 행

Q. 클래스의 객체를 print()로 출력하는 방법 본문

개인 공부/Python_Study

Q. 클래스의 객체를 print()로 출력하는 방법

COSMOSUNION 2022. 6. 9. 16:04

 

문제 이해

클래스의 객체를 print() 함수로 호출할 경우, 원하는 문자열이 아닌 <main.Soldier.object at 0x7f7e3e3dc970>와 같은 형식으로 출력되었다.

 

 

해결 방법

1. 클래스 내에 __str__ 메소드를 정의하여 객체를 문자열로 반환

2. 클래스 내에 __repr__메소드를 정의하여 객체를 문자열로 반환

 

  __str__ __repr__
공통점 기능 객체를 문자열로 반환시키는 함수
방법 클래스 내에 str 메소드 정의 클래스 내에 repr 메소드 정의
차이점

목적 (서로 다른 자료형의) 객체 간에
인터페이스로써 사용되는 목적
사용자가 이해가능한 표현으로
나타내기 위한 목적
예제
 
활용 str 메소드 반환값은 eval함수에 사용 불가능 repr 메소드 반환값은 eval함수에 사용 가능
우선순위 __str__ > __repr__

str 메소드가 정의된 경우 : str 메소드를 실행(우선순위)
str 메소드가 정의되지 않은 경우 : repr 메소드를 실행

 

 

 

예제 코드(Github) :

https://github.com/cosmosunion/Python_troubleshooting/commit/634616781ae4c9d5ddd9021809e394478fa78c02

 

Q. print()함수를 통해 클래스내에 생성된 인스턴스를 출력하는 방법 · cosmosunion/Python_troubleshooting@6

* 출력값 : 리스트형태 [<main.Soldier.object at 0x7f7e3e3dc970>,<main.Medic.object at 0x7f7e3e3ec760>,<main.Tank.object at 0x7f7e3e3ec7c0>] * 코드해석 : player_group은 리스트의 형태로 되어 있으며, 리스트...

github.com

 

 

Comments