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


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

  • 2016년 01월 06일에 작성됨

조회수 209


1 답변


좋아요
0
싫어요
채택취소하기

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()를 주로 씁니다.

  • 2016년 01월 06일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close