type 외에도 우리는 우리가 원하는 메타클래스를 만들 수도 있다
__
metaclass__
Foo 클래스를 만들기 위해 해당 메타클래스를 사용합니다. 발견하지 못한 경우에는 클래스를 만들기 위해 type을 사용
우리가 보통 메타클래스를 introspection, manipulating, inheritance, __dict__와 같은 변수 등을 사용하여 복잡한 무언가를 만드는 데 사용
metaclass 속성은 상속되지 않는다는 점
현재 컨텍스트와 알맞는 클래스를 만들기 위해 API와 같은 곳에 커스텀 메타클래스를 사용
metaclass callable 하기만 하면 댐
메타클래스를 이용하면 다음 일들이 쉬워집니다:
- 클래스 생성 가로채기(intercept)
- 클래스 수정하기(modify)
- 수정된 클래스 반환하기
API 개발에 많이 사용가능
function style
__metaclass__
class style
type.__new__