728x90

type 2

[Python] Type Check - type(), isinstance()

type() type()의 경우 파이썬에서 기본적으로 제공하는 자료형에 대해 type check가 가능하다. type(1) is int # True type([]) is list # True type('abc') is str # True type(1) is type(2) # True 하지만, type()은 상속의 경우가 고려되지 않아 상속받은 클래스의 인스턴스는 구분할 수 없다. class A(): pass class B(A): pass a = A() b = B() type(a) is A # True type(b) is B # True type(b) is A # False 이러한 문제를 해결하기 위해서는 어떤 메서드를 사용해야 할까? isInstance() type()의 한계점을 isInstance()로..

🐍Python | Django 2022.05.18

[Python] 메타클래스(MetaClass)

메타클래스에 대해 알아보기 전에 먼저 객체와 인스턴스에 대해 한번 짚고 넘어가자. 클래스로 만든 객체를 인스턴스라고 한다. 그렇다면 객체와 인스턴스의 차이는 무엇일까? 예를 들어 a = Person() 이렇게 만든 a는 객체이다. 그리고 a 객체는 Person의 인스턴스이다. 즉, 인스턴스라는 말은 특정 객체가 어떤 클래스의 객체인지를 관계 위주로 설명할 때 사용된다. 파이썬에서의 모든 것은 객체이다. 따라서 클래스도 객체이다. 그렇다면 클래스를 만들기 위한 클래스가 필요하다는 말이 되는데, 클래스를 만들기 위한 클래스는 무엇일까? 바로 이것이 메타클래스이다. 메타클래스는 우리가 재정의해주지 않으면 기본적으로 클래스를 만드는 클래스로 정해져 있다. 만약, 특정 클래스를 만들 때, 특별한 규칙을 적용하고 ..

🐍Python | Django 2022.04.27
728x90