반응형

지금까지 파이썬에서 타입 비교를 할 때 type() 메소드를 사용해서 비교하고 있었는데 이게 알고 보니 2 버전과 3 버전에서 결과가 다르게 나오고 있었다.

Python 2

str(type(obj)) == "<type 'str'>"
Python

Python 3

str(type(obj)) == "<class 'str'>"
Python

잘못된 방법이라 올바른 방법을 찾아봤더니 두 가지 방법이 있었다.

1. obj가 정확히 str인지 확인

type(obj) is str
Python

2. obj가 str이거나 str을 상속받은 클래스인지 확인

isinstance(obj, str)
Python

일반적으로 2번을 더 자주 사용한다고 한다. 앞으로는 2번으로 사용해야겠다. 참고로 issubclass() 메소드의 두 번째 인자는 튜플도 허용하니 여러 타입 중의 하나인지 확인하고 싶을 땐 튜플을 넘겨주면 된다.

반응형

+ Recent posts