## object의 타입을 어떻게 하면 알 수 있을까요?

##### 조회수 14281회

어떤 변수가 무슨 타입인지 알고 싶은데 이럴 땐 어떡하면 될까요?

#### 1 답변

• type()instanceof()를 쓰는 방법이 있습니다.

### type()

``````class Base():
pass
a = Base()

print "type([]) is list:\t\t",type([]) is list
print "type({}) is dict:\t\t", type({}) is dict
print "type(()) is tuple:\t\t", type(()) is tuple
print "type('') is str:\t\t", type("") is str
print "type(0) is int:\t\t\t", type(0) is int
print "type(3.14) is float:\t", type(3.14) is float
print "type(a) is Base:\t\t", type(a) is Base
``````
``````type([]) is list:       True
type({}) is dict:       True
type(()) is tuple:      True
type('') is str:        True
type(0) is int:         True
type(3.14) is float:    True
type(a) is Base:        False
``````

### isinstance()

``````class Base(object):
pass
a = Base()

print "isinstance([], list):\t", isinstance([], list)
print "isinstance({}, dict):\t", isinstance({}, dict)
print "isinstance((), tuple):\t", isinstance((), tuple)
print "isinstance('', str):\t", isinstance("", str)
print "isinstance(0, int):\t\t", isinstance(0, int)
print "isinstance(3.14, float):", isinstance(3.14, float)
print "isinstance(a, Base):\t" , isinstance(a, Base)

``````
``````isinstance([], list):   True
isinstance({}, dict):   True
isinstance((), tuple):  True
isinstance('', str):    True
isinstance(0, int):     True
isinstance(3.14, float): True
isinstance(a, Base):    True
``````

### 주의

`type()`으로는 object의 상속까지 알아낼 수는 없기 때문에 상속관계까지 포함하고 싶으면 `isinstance()` 를 쓰세요.

``````class Base(object):
pass
class Derived(Base):
pass
b = Derived()
print "type(b) is Base:\t\t", type(b) is Base
print "isinstance(b, Base):\t", isinstance(b, Base)
``````
``````type(b) is Base:        False
isinstance(b, Base):    True
``````

이런 차이 때문에 보통 `type()`보다는 `isinstance()`를 주로 씁니다.

## 답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)