Python - isinstance()

Python - isinstance()

isinstance() 함수는 Python 내장 함수 중 하나로, 어떤 객체가 특정 클래스나 타입의 인스턴스인지를 확인하는 데 사용됩니다. 주어진 객체가 지정한 클래스 또는 타입의 인스턴스인 경우 True를 반환하고, 아닌 경우 False를 반환합니다.

# 예제 클래스 정의
class Animal:
    pass

class Dog(Animal):
    pass

class Cat(Animal):
    pass

# 객체 생성
dog_instance = Dog()
cat_instance = Cat()

# isinstance 사용
print(isinstance(dog_instance, Dog))  # True
print(isinstance(cat_instance, Dog))  # False

# 상속 관계 확인
print(isinstance(dog_instance, Animal))  # True
print(isinstance(cat_instance, Animal))  # True

위의 예시에서 isinstance() 함수는 객체가 특정 클래스의 인스턴스인지 확인합니다. 또한 클래스 간의 상속 관계에도 사용할 수 있습니다.

활용

제가 Django 프로젝트에서 활용한 방식을 간단하게 표현하면 다음과 같습니다.

class PDFMaker:
    # 생략
    def makes_pdf(self) -> Union[HttpResponse, bytes]:
        try:
            # 생략
            # bytes 타입 return
        except Exception as e:
            # 생략
            return HttpResponse(response_data, status=500)


# views
class PDFView(APIVIew):
# 생략
    pdf_maker = PDFMaker()
    byte = pdf_maker.makes_pdf()
    if isinstance(byte, HttpResponse):
        return byte  # 예외 발생 시 HttpResponse 반환
    # 생략
    return FileResponse(byte)

예시 코드에서 사용된 isinstance() 함수의 목적은 byte 변수가 HttpResponse 클래스의 인스턴스인지를 확인하는 것입니다.
이를 통해 pdf_maker.makes_pdf() 메서드가 HttpResponse 객체를 반환하는지 여부를 판단하여 에러 처리를 수행했습니다.
주어진 코드에서 isinstance(byte, HttpResponse)byte 변수가 HttpResponse 클래스의 인스턴스인지를 확인하고, 그에 따라 에러 처리를 수행하는 역할을 합니다.

'Python > Python' 카테고리의 다른 글

Python의 변수와 참조  (0) 2023.09.21
deque 모듈  (0) 2023.08.30
Python) 위치 인자, 키워드 인자  (0) 2023.07.25
@classmethod 와 @staticmethod  (0) 2023.07.20
@property 데코레이터  (0) 2023.07.01