인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)

클래스 & 메소드 심화(2-2)

파이썬 클래스의 소멸자에 관한 질문입니다

작성

·

261

0

안녕하세요, 클래스 소멸자에 관한 더 깊은 내용이 궁금해서 구글링을 해 봤는데요

class Employee:
 
    def __init__(self):
        print('Employee created')

    def __del__(self):
        print("Destructor called")
 
def Create_obj():
    print('Making Object...')
    obj = Employee()
    print('function end...')
    return obj
 
print('Calling Create_obj() function...')
a = Create_obj()
print('Program End...')

다음과 같은 코드에서 의문점이 몇 가지 생겼습니다.

우선 위의 코드를 그대로 실행하면 

Calling Create_obj() function...

Making Object...

Employee created

function end...

Program End...

Destructor called

순으로 결과가 출력됩니다.

 

여기서 제가 궁금한 첫번째는 위의 코드에서

return obj

이 부분은 어떤 의미를 가지고 있는가 입니다.

obj라는 인스턴스를 생성한 후, return 한 것으로 보이는데, 정확히 어떤 기능을 하는 코드인지가 궁금합니다.

그리고, 위의 return obj

부분을 지운 후 코드를 실행하면

즉, 

class Employee:
 
    def __init__(self):
        print('Employee created')

    def __del__(self):
        print("Destructor called")
 
def Create_obj():
    print('Making Object...')
    obj = Employee()
    print('function end...')
 
print('Calling Create_obj() function...')
a = Create_obj()
print('Program End...')

다음의 코드를 실행하면 출력 결과가

Calling Create_obj() function...

Making Object...

Employee created

function end...

Destructor called

Program End...

이렇게 나오며 소멸자의 호출 순서가 달라지는 것을 확인할 수 있었습니다. 왜 소멸자의 호출 순서가 달라지는 것인지 그 이유가 궁금합니다.

 

 

답변 1

0

좋은사람님의 프로필 이미지
좋은사람
지식공유자

해당 클래스 자기자신을 반환합니다.

세부적으로 설명하기 위해서는 아래 내용을 검색하셔서 클래스 생성 과정을

읽어보시기를 추천드려요.

파이썬 디스크립터, Type 함수를 사용한 클래스 생성 원리 등을

검색해 보시면 됩니다.

 

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기