2014-06-16 1 views
2

이것은 머리말을 붙이기 위해 약간의 코드를 프로토 타이핑하는 동안 머리 속에 떠오른 질문 일뿐입니다. 클래스를 동적으로 생성하는 것은 적용 범위가 매우 좁습니다.다른 개체와 마찬가지로 동적으로 생성 된 클래스가 파괴 되었습니까?

파이썬

는 동적으로, 예를 들면, 클래스를 정의한 DEF [1] 내부에 정의를 중첩 할 수

클래스의 인스턴스가 미사용 될 때 어떻게됩니까
def NewClass(doc): 
    class MyClass(object): 
    __doc__ = doc 
    return MyClass 

? 그것의 참조 개수가 0이되고 다른 객체처럼 파괴됩니까? 아니면 특별히 다루는 클래스인가? 언어 문서를 읽었을 때, 나는 클래스 객체 파괴에 관해 많은 것을 보지 못했습니다.

더 구체적으로 말하면 사용자 요청에 대한 응답으로 코드를 생성하면 프로세스 수명이 다할 때 수천 또는 수백만이 생성되므로 모든 메모리가 부족하여 메모리 부족에 대해 걱정할 필요가 있습니다. 생성 된 클래스?

[1] 예 : type "function"및 아마도 다양한 메타 클래스 항목 또는 __new__ 트릭.

답변

2

예, 클래스는 개체이기도하며 동일한 참조 집계 규칙에 의해 관리됩니다.

리턴 값으로 인스턴스를 작성하는 경우 인스턴스에 대한 참조는 해당 인스턴스의 __class__뿐입니다. 해당 특정 클래스의 인스턴스가 더 이상 없으면 더 이상 참조되고 삭제되지 않습니다.

관련 문제