Python의 클래스도 객체입니다.
메타클래스를 이해하기 전에 먼저 Python의 클래스를 더 자세히 이해해 보겠습니다. 대부분의 프로그래밍 언어에서 클래스는 객체를 생성하는 방법을 설명하는 데 사용되는 코드 세그먼트 집합입니다. 이는 Python에서도 마찬가지입니다.
class ObjectCreator(object): pass mObject = ObjectCreator() print(mObject)
출력 결과:
<__main__.ObjectCreator object at 0x00000000023EE048>
그러나 Python의 클래스는 대부분의 프로그래밍 언어와 다릅니다. Python에서는 클래스를 객체로 이해할 수 있습니다. 예, 여기에는 실수가 없습니다. 대상입니다.
왜?
class 키워드를 사용하는 한 Python 인터프리터는 실행 중에 객체를 생성합니다.
예:
class ObjectCreator(object): pass
프로그램이 이 코드를 실행하면 메모리에 객체가 생성되며 이름은 ObjectCreator입니다. 이 객체(클래스) 자체가 객체(클래스 인스턴스)를 생성하는 능력을 갖고 있고, 그것이 바로 클래스인 이유입니다. 그러나 그 본질은 여전히 객체이므로 이에 대해 다음 작업을 수행할 수 있습니다.
class ObjectCreator(object): pass def echo(ob): print(ob) mObject = ObjectCreator() print(mObject) # 可以直接打印一个类,因为它其实也是一个对象 print(ObjectCreator) # 可以直接把一个类作为参数传给函数(注意这里是类,是没有实例化的) echo(ObjectCreator) # 也可以直接把类赋值给一个变量 objectCreator = ObjectCreator print(objectCreator)
출력 결과는 다음과 같습니다.
<__main__.ObjectCreator object at 0x000000000240E358> <class '__main__.ObjectCreator'> <class '__main__.ObjectCreator'> <class '__main__.ObjectCreator'>