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

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

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

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.