파이썬(Python)
[ Basic ] 파이썬(Python) isinstance() 함수에 대한 기본
카루루1007
2024. 11. 21. 23:34
728x90
반응형
파이썬의 isinstance() 함수는
객체가 특정 클래스나 타입의 인스턴스인지 확인하는
매우 유용한 도구입니다.
기본 개념
isinstance() 함수는 객체가 특정 클래스나 타입의 인스턴스인지 확인합니다.
기본 문법은 다음과 같습니다.
isinstance(object, classinfo)
반환값은 True 또는 False를 반환합니다.
클래스의 인스턴스 인지 검사
아래 코드는 isinstance() 함수를 사용해 객체가 특정 클래스의 인스턴스 인지
확인하는 코드입니다.
class MyClass:
pass
obj = MyClass()
if isinstance(obj, MyClass):
print("obj는 MyClass의 인스턴스입니다.")
else:
print("obj는 MyClass의 인스턴스가 아닙니다.")
여러 클래스도 한 번에 검사할 수 있습니다.
class MyClass:
pass
class AnotherClass:
pass
obj = MyClass()
if isinstance(obj, (MyClass, AnotherClass)):
print("obj는 MyClass 또는 AnotherClass의 인스턴스입니다.")
else:
print("obj는 MyClass 또는 AnotherClass의 인스턴스가 아닙니다.")
위 코드를 살펴보시면
isinstance() 함수의 두 번째 인자의 형태는 튜플입니다.
튜플에 들어있는 어느 하나라도 일치하면 True를 반환합니다.
이렇게 튜플을 전달하면 여러 클래스의 인스턴스인지 확인할 수 있지만,
중첩된 튜플은 사용할 수 없습니다.
# 올바른 사용 예
isinstance(obj, (int, str, list))
# 잘못된 사용 예 (중첩된 튜플)
isinstance(obj, ((int, str), list)) # TypeError 발생
다음 코드는 상속된 클래스를 확인하는 코드입니다.
class ParentClass:
pass
class ChildClass(ParentClass):
pass
obj = ChildClass()
if isinstance(obj, ParentClass):
print("obj는 ParentClass 또는 그 서브클래스의 인스턴스입니다.")
else:
print("obj는 ParentClass 또는 그 서브클래스의 인스턴스가 아닙니다.")
위 코드에서 obj는 ChildClass의 인스턴스이지만,
ChildClass는 ParentClass를 상속받았으므로,
isinstance(obj, ParentClass)는 True를 반환합니다.
반응형
데이터 타입 검사
파이썬의 기본 데이터 타입도 isinstance() 함수로 확인이 가능합니다.
num = 10
text = "Hello, World!"
items = [1, 2, 3]
if isinstance(num, int):
print("num은 정수입니다.")
if isinstance(text, str):
print("text는 문자열입니다.")
if isinstance(items, list):
print("items는 리스트입니다.")
isinstance() 함수를 아래와 같이 사용하면
다양한 데이터 타입의 구분에 따라 처리하는 코드를 각각 작성할 수 있십니다.
def process_item(item):
if isinstance(item, int):
print(f"정수 처리 중: {item}")
elif isinstance(item, str):
print(f"문자열 처리 중: {item}")
elif isinstance(item, list):
print(f"리스트 처리 중: {item}")
else:
print(f"알 수 없는 타입: {type(item)}")
items = [10, "hello", [1, 2, 3], 3.14]
for item in items:
process_item(item)
사용자의 입력을 검증하는 데 사용할 수도 있습니다.
def get_integer_input(value):
if not isinstance(value, int):
raise ValueError("정수를 입력해야 합니다.")
return value
try:
user_input = get_integer_input("10") # ValueError 발생
except ValueError as e:
print(e)
여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.
728x90
반응형