파이썬의 모든 것은 클래스를 포함한 객체입니다. 모든 클래스는 "유형"이라는 클래스의 인스턴스입니다. 유형 개체는 유형 클래스의 인스턴스이기도 합니다. 클래스 객체의 __bases__ 속성을 검사하여 클래스의 상속 계층을 검사할 수 있습니다. type() 메소드는 매개변수로 전달된 인수(객체)의 클래스 유형을 반환합니다. 단일 인수 유형(obj)이 유형 메소드에 전달되면 지정된 객체의 유형을 반환합니다. 세 개의 인수 type(name, bases, dict)이 전달되면 새 유형 개체를 반환합니다.
유형() 사용
가장 많이 사용되는 데이터 유형에 대한 클래스를 살펴보겠습니다. 아래 프로그램에서 일부 변수를 초기화한 다음 type()을 사용하여 해당 클래스를 확인합니다.
예시
# Some variables a = 5 b = 5.2 c = 'hello' A = [1,4,7] B = {'k1':'Sun','K2':"Mon",'K3':'Tue'} C = ('Sky','Blue','Vast') print(type(a)) print(type(b)) print(type(c)) print(type(A)) print(type(B)) print(type(C))
출력
위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -
<class 'int'> <class 'float'> <class 'str'> <class 'list'> <class 'dict'> <class 'tuple'>
클래스 유형
위의 클래스 유형을 자세히 살펴보면 모두 'type'이라는 클래스에 속해 있음을 알 수 있습니다.
예시
print(type(int)) print(type(dict)) print(type(list)) print(type(type))
출력
위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -
<class 'type'> <class 'type'> <class 'type'> <class 'type'>
새 개체 유형 만들기
또한 위와 유사한 접근 방식을 사용하여 새 객체를 생성할 수 있습니다. 여기에서 새 유형 개체를 만들기 위해 세 개의 매개변수를 전달합니다.
예시
Object1 = type('A', (object,), dict(a='Hello', b=5)) print(type(Object1)) print(vars(Object1)) class NewCalss: a = 'Good day!' b = 7 Object2 = type('B', (NewCalss,), dict(a='Hello', b=5)) print(type(Object2)) print(vars(Object2))
출력
위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -
<class 'type'> {'a': 'Hello', 'b': 5, '__module__': '__main__', '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None} <class 'type'> {'a': 'Hello', 'b': 5, '__module__': '__main__', '__doc__': None}