파이썬에는 "매개 변수화 된 클래스"가 없으므로 (또는 필요한) 파이썬에서 예제를 제공하기가 어렵습니다 ;-). 메타 클래스는 간단히 "클래스의 클래스"입니다. 일반적으로 type
(길고, Py2에서는 object
이나 다른 기본 제공 유형 또는 다른 새로운 스타일의 클래스를 상속하여 클래스를 새로운 스타일로 만들었습니다. - 구식 클래스는 Py2의 유산이며, 다행스럽게도 Py3에서는 사라졌으며, 이상적으로는 잊어 버려야합니다. 몇 가지 고급 목적을 위해 사용자 정의 메타 클래스 (일반적으로 서브 클래스 type
)를 만들 수 있지만, 에이 필요하지는 않습니다 (특히, Python 2.6부터 사용자 정의 메타 클래스를 요구하는 많은 부분이 클래스 데코레이터로 더 간단하게 완료).
클래스 C가 주어지면 type(C)
은 메타 클래스입니다.
매개 변수화 된 클래스는 완전히 다른 개념입니다. 파이썬에서 올 수있는 가장 가까운 아마 인수를 기반으로 클래스를 만들고 반환하는 공장 기능입니다 :
def silly(n):
class Silly(object):
buh = ' '.join(n * ['hello'])
return Silly
Silly1 = silly(1)
Silly2 = silly(2)
a = Silly1()
print(a.buh)
b = Silly2()
print(b.buh)
가 다시
hello
hello hello
인쇄됩니다, 그것은 '하지 뭔가 당신에게 확실히이다 하나 또는 몇 개의 인수만으로 여러 클래스를 만드는 경우가 종종 있습니다. 어쨌든, 당신이 볼 수 있듯이,이 클래스의 클래스 (AKA 메타 클래스)와는 아무런 관련이 없습니다.이 예제에서는 항상 type
입니다. (거의 모든 현실적인 예에서 생각해 볼 수 있습니다. 예를 들어, 이것을 수행하는 지점이 현실적이고 따라서 필수적으로 매우 복잡한 것보다는 분별하기 어렵다.
나는 며칠 전 Py3로 바꿨다. 나는 지금 당장 학생이기 때문에 내일의 '새로운 것'을 배워야한다고 생각했다. 맞춰보세요. 똑똑한 움직임이었습니다 :-) – yrsnkd
+1. 좋은 설명. –
+1 항상 훌륭한 설명. – katrielalex