νμ΄μ¬μμλ κ°μ²΄λ ν΄λμ€μ νμ
μ νμΈν λ isinstance
μ issubclass
λ₯Ό μμ£Ό μ¬μ©ν©λλ€.
λ ν¨μλ λΉμ·ν΄ 보μ΄μ§λ§ νμΈνλ λμκ³Ό μ©λκ° λ€λ¦ λλ€.
μ΄ κΈμμλ λ ν¨μμ μ°¨μ΄, μ¬μ©λ², λΉκ΅λ₯Ό μ΄λ³΄μλ μ΄ν΄ν μ μλλ‘ μ½κ² μ€λͺ νκ² μ΅λλ€.
isinstance(κ°μ²΄, ν΄λμ€)
class Animal: pass
class Dog(Animal): pass
dog = Dog()
print(isinstance(dog, Dog)) # β
True
print(isinstance(dog, Animal)) # β
True (Dogμ Animalμ νμ ν΄λμ€)
print(isinstance(dog, object)) # β
True (λͺ¨λ ν΄λμ€λ object μμ)
print(isinstance(dog, str)) # β False
λν, λ λ²μ§Έ μΈμλ‘ νμ ννμ λ£μΌλ©΄ μ¬λ¬ νμ μ€ νλλΌλ μΌμΉνλ©΄ Trueλ₯Ό 리ν΄νλ€.
x = 42
print(isinstance(x, int)) # True
print(isinstance(x, (str, int))) # True (intκ° ν¬ν¨λμ΄ μμ)
print(isinstance(x, str)) # False
μ¬μ©νλ μ΄μ λ‘λ νμ
κ²μ¦ μ type(obj) == int
λ³΄λ€ μ μ°νλ©°, μμ κ΄κ³κΉμ§ νμΈν μ μκΈ° λλ¬Έμ΄λ€.
issubclass(ν΄λμ€, ν΄λμ€)
class Animal: pass
class Dog(Animal): pass
print(issubclass(Dog, Animal)) # β
True
print(issubclass(Animal, Dog)) # β False
print(issubclass(Dog, object)) # β
True (λͺ¨λ ν΄λμ€λ object νμ)
κ΅¬λΆ | isinstance | issubclass |
---|---|---|
νμΈ λμ | κ°μ²΄ vs ν΄λμ€ | ν΄λμ€ vs ν΄λμ€ |
λ°ν κ° | True / False | True / False |
μμ κ΄κ³ | νμ ν΄λμ€ μΈμ€ν΄μ€λ True | νμ ν΄λμ€μ΄λ©΄ True |
μμ | isinstance(dog, Animal) β True | issubclass(Dog, Animal) β True |
λ ν¨μ λͺ¨λ λ λ²μ§Έ μΈμμ ν΄λμ€ ννμ μ λ¬ν μ μμ΅λλ€.
class Animal: pass
class Dog(Animal): pass
class Cat(Animal): pass
dog = Dog()
# isinstance
print(isinstance(dog, (Dog, Cat))) # β
True (Dog ν¬ν¨)
# issubclass
print(issubclass(Dog, (Animal, str))) # β
True (Animal ν¬ν¨)
isinstance
λ κ°μ²΄ νμΈμ©
issubclass
λ ν΄λμ€ νμΈμ©
type(obj) == Class
λμ isinstance(obj, Class)
μ¬μ©
type()
μ μμ κ΄κ³λ₯Ό κ³ λ €νμ§ μμ.dog = Dog()
print(type(dog) == Animal) # β False
print(isinstance(dog, Animal)) # β
True
def process(animal):
if isinstance(animal, Animal):
print("λλ¬Ό μ²λ¦¬ μ€...")
else:
raise TypeError("Animal λλ νμ ν΄λμ€λ§ νμ©λ©λλ€.")
process(Dog()) # β
λλ¬Ό μ²λ¦¬ μ€...
process("cat") # β TypeError
β
isinstance(obj, Class)
β κ°μ²΄κ° ν΄λμ€(λλ νμ ν΄λμ€) μΈμ€ν΄μ€μΈμ§ νμΈ
β
issubclass(Class1, Class2)
β Class1μ΄ Class2μ νμ ν΄λμ€μΈμ§ νμΈ
β μ¬μ© κ°μ΄λ
isinstance
μ issubclass
λ λΉμ·νμ§λ§ μ©λκ° λ€λ₯Έ νμ
κ²μ¬ λꡬμ
λλ€.
isinstance
issubclass
μ΄μ νμ κ²μ¬ μ μΈμ μ΄λ€ ν¨μλ₯Ό μ¨μΌ ν μ§ λͺ νν΄μ‘μ κ²μ λλ€.