isinstance 함수

김엣취·2024년 6월 5일

Python

목록 보기
2/9
isinstance (a, type_a)		# a가 type_a인지 확인해주세요

isinstance (인스턴스, 클래스)	# 인스턴스가 해당 클래스에 있는지 확인해주세요

자료의 type 말고도 해당 클래스의 인스턴스인지 확인 가능함.

참고 문제

ex) type_check는 함수의 매개변수가 지정된 자료형(클래스)이면 함수를 정상적으로 호출하고, 지정된 자료형과 다르면 RuntimeError 예외를 발생시키면서 '자료형이 다릅니다.' 에러 메시지를 출력해야 합니다.

def type_check(type_a, type_b):		# type_check 함수 만들어서 각각 type_a, type_b인지 확인할거임!
    def real_decorator(func):		# 이제부터 진짜 데코레이터 만들거임
        def wrapper(a, b):			# 매개변수 2개 지정해달라 할거임
            if isinstance(a, type_a) and isinstance(b, type_b):		#만약 a가 type_a고, b가 type_b면
                return func(a, b)		# 작동하게 해주세요
            else:
                raise RuntimeError('자료형이 올바르지 않습니다.')		# 아니라면, 에러뜨게 해주세요
        return wrapper
    return real_decorator
@type_check(int, int)	# a, b 둘다 int면
def add(a, b):
    return a + b		# a + b 리턴하기
 
print(add(10, 20))
print(add('hello', 'world'))
-> 실행 결과

30
Traceback (most recent call last):
  File "C:\project\practice_decorator.py", line 16, in <module>
    print(add('hello', 'world'))
  File "C:\project\practice_decorator.py", line 7, in wrapper
    raise RuntimeError('자료형이 올바르지 않습니다.')
RuntimeError: 자료형이 올바르지 않습니다.

0개의 댓글