반응형

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

Python 2


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

Python 3


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

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

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


type(obj) is str

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


isinstance(obj, str)

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

반응형

+ Recent posts