Python에서는 str() 함수 하나만으로 숫자, 리스트, 튜플, 딕셔너리 등 모든 내장(built-in) 데이터 타입을 손쉽게 문자열 형태로 변환할 수 있습니다. 이 글에서는 기본 데이터 타입의 변환 방법과 함께, 직접 만든 클래스(사용자 정의 클래스)를 문자열로 출력하는 방법까지 단계별로 살펴보겠습니다.
1. str() 함수로 내장 데이터 타입 변환하기
str() 함수는 인자로 전달된 값을 해당 값의 문자열 표현(string representation)으로 변환합니다. 아래 예시처럼 정수, 실수, 복소수, 리스트, 튜플, 딕셔너리 등 어떤 타입이든 모두 문자열로 바꿀 수 있습니다.
>>> str(10)
'10'
>>> str(11.11)
'11.11'
>>> str(3+4j)
'(3+4j)'
>>> str([1,2,3])
'[1, 2, 3]'
>>> str((1,2,3))
'(1, 2, 3)'
>>> str({1:11, 2:22, 3:33})
'{1: 11, 2: 22, 3: 33}'출력 결과를 보면 각 값이 그대로 유지된 채 따옴표로 감싸진 문자열이 되었음을 확인할 수 있습니다. 이렇게 변환된 문자열은 파일에 쓰기, 화면 출력, 로그 기록 등 다양한 상황에서 활용됩니다.
2. 사용자 정의 클래스를 문자열로 변환하기: __str__() 메서드
직접 작성한 클래스의 객체를 문자열로 변환하려면, 클래스 안에 __str__() 메서드(매직 메서드)를 반드시 정의해야 합니다. 이 메서드가 반환하는 문자열이 str() 함수 호출 시 그대로 출력됩니다.
>>> class rectangle:
def __init__(self):
self.l = 10
self.b = 10
def __str__(self):
return 'length={} breadth={}'.format(self.l, self.b)
>>> r1 = rectangle()
>>> str(r1)
'length=10 breadth=10'코드 설명
- __init__(): 객체 생성 시 가로(l)와 세로(b) 값을 초기화합니다.
- __str__(): 객체가 문자열로 변환될 때 반환할 내용을 정의합니다.
str(r1)을 호출하면__str__()이 자동으로 실행되어 'length=10 breadth=10'이라는 문자열이 반환됩니다.
마무리 정리
정리하자면, Python에서 데이터 타입을 문자열로 바꾸는 방법은 두 가지입니다.
- 내장 데이터 타입:
str()함수를 호출하기만 하면 즉시 문자열로 변환됩니다. - 사용자 정의 클래스: 클래스 내부에
__str__()메서드를 정의한 후str()함수를 사용합니다.