클래스 변수 생성 시점
클래스 변수 생성 시점
실제로 Django와 같은 프레임웤을 사용하면 reverse나 reverse_lazy와 같은 함수를 사용할 때 클래스 변수를 사용해야 할 때가 있습니다. 이러한 경우 클래스 변수 생성 시점을 모르면 동작 원리를 이해하는데 어려움을 겪을 수 있습니다.
위 코드는 클래스 변수 a
와 b
를 선언하고 b
에는 sum([1, 2])
를 사용했습니다. 이 코드를 실행하면 클래스 A가 선언되는 시점에 sum([1, 2])
가 실행되어 3
이 할당됩니다.
그런데 만약 sum([1, 2])이 시간이 많이 걸리는 코드이거나, 외부 API를 호출하는 코드라면 클래스 선언 시점에 실행되는 것은 좋지 않습니다. 이런 경우에는 b를 None으로 초기화해주고, 별도의 함수를 만들어서 호출하는 것이 좋습니다.
여기서 아래처럼 __init__
에서 초기화 해주는 코드는 잘못된 코드입니다. 클래스 변수가 아니라 인스턴스 변수가 됩니다.