less than 1 minute read

본 포스팅은 “윤성우의 열혈 파이썬 중급편” 책 내용을 기반으로 작성되었습니다. 잘못된 내용이 있을 경우 지적해 주시면 감사드리겠습니다.

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