Python 대상 중del__방법 이 작용 하 는 조건 에 대한 상세 한 설명

2689 단어 Python대상del
대상 의del__대상 이 gc 에 의 해 회수 되 었 을 때 작용 하 는 방법 으로 그 실행 은 일반적으로 대상 이 계속 인용 할 수 없다 는 것 을 의미한다.
시범 코드 는 다음 과 같다.

class Demo:

def __del__(self):

  print("calling __del__")
 
obj = Demo()

del obj
프로그램 실행 결 과 는 다음 과 같 습 니 다.

grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python del_method.py

calling __del__
하지만 이 건del__집행 의 유일한 방법.사실 이 방법 도 직접 호출 할 수 있다.테스트 코드 는 다음 과 같 습 니 다:

class Demo:

def __init__(self):

  print("calling __del__")

obj = Demo()

obj.__del__()
프로그램 실행 결과:

grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python del_method.py

calling __del__ 
그러나 이런 집행 은 쓰레기 회수 의 정상 적 인 집행 을 보장 하지 못 하 는 경우 가 많다.
다음 코드:

grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python del_method.py

calling __del__

calling __del__
실행 결과:

grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python del_method.py

calling __del__

calling __del__
추측:위의 삭제 방법 은 두 번 의 삭 제 를 촉발 하 였 으 나 인용 관계 로 삭 제 는 실현 되 지 않 았 다.
수정 코드 검증 은 다음 과 같 습 니 다.

class Demo:

def __del__(self):

  print("calling __del__")

  del self

 

obj = Demo()

obj.__del__()

print(id(obj))
실행 결과:

grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python del_method.py

calling __del__

140726800222040

calling __del__
위 에서 볼 때 주로 대상 에 대한 인용 도 있 는데 이 소각 동작 은 대상 의 인용 이 없어 진 후에 야 완성 할 수 있다.추가 인증 코드:

class Demo:

def __del__(self):

  print("calling __del__")

  del self

 

obj = Demo()

obj.__del__()

print(id(obj))

print(id(obj))
실행 결과:

grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/02_programme_language/03_python/03_OOP/2017/08$python del_method.py

calling __del__

140568015406936

140568015406936

calling __del__
위의 결 과 를 보면 추측 은 여전히 정확 하 다.
이상 이 Python 대상 중del__방법 이 작용 하 는 조건 에 대한 상세 한 설명 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 여러분 들 이 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기