[Python] 18. isinstance 함수와 object 클래스
본 포스팅은 “윤성우의 열혈 파이썬 중급편” 책 내용을 기반으로 작성되었습니다. 잘못된 내용이 있을 경우 지적해 주시면 감사드리겠습니다.
18-1. isinstance 함수
isinstance(object, classinfo) → 객체의 클래스 유형을 확인하는 함수
class Vehicle:
pass
class Car(Vehicle):
pass
class ElectricCar(Car):
pass
isinstance([1, 2], list)
ec = ElectricCar()
isinstance(ec, ElectricCar)
isinstance(ec, Car)
isinstance(ec, Vehicle)
(결과) True
True
True
True
위 결과로 보아 입력 인자 객체가 입력 인자 클래스의 객체인 경우, 혹은 입력 인자 객체가 입력 인자 클래스를 직접 상속하거나 간접 상속하는 경우 True를 반환한다!
18-2. object 클래스
파이썬의 모든 클래스는 object 클래스를 직접 또는 간접 상속한다!
class Simple:
pass
isinstance(Simple(), object)
isinstance([1, 2], object)
isinstance(type, object) # 타입 클래스도 오브젝트 클래스 상속!
(결과) True
True
True
object 클래스에 담겨 있는 대표 메소드들은 다음과 같다.
dir(object)
(결과) ['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
18-3. issubclass 함수
issubclass 함수의 첫번째 인자와 두번째 인자 모두 클래스를 받는다. 첫번째 인자의 클래스가 두번째 인자의 클래스를 상속할 경우 True를 반환한다!
class A:
pass
class Z(A):
pass
issubclass(Z, A)
issubclass(type, object)
isinstance(Z, A) # 타입 클래스도 오브젝트 클래스 상속!
(결과) True
True
False
Leave a comment