파이썬에서 약한 참조를 생성하려면 weakref를 사용해야 합니다. 기준 치수. 약한 참조는 개체를 활성 상태로 유지하는 데 충분하지 않습니다. 약한 참조의 기본 용도는 큰 개체에 대한 캐시 또는 매핑을 구현하는 것입니다.
이 모듈을 사용하려면 −
를 사용하여 가져와야 합니다.weakref 가져오기
모든 개체가 약하게 참조될 수 있는 것은 아닙니다. tuple 또는 int와 같은 일부 내장 유형은 약한 참조를 지원하지 않습니다. 약한 참조와 관련된 몇 가지 클래스와 메서드가 있습니다.
클래스 weakref.ref(object[, callback])
객체에 대한 약한 참조를 반환합니다. 참조 대상이 아직 살아 있을 때 참조 개체를 호출하여 실제 개체를 검색할 수 있지만 실제 개체가 없으면 None을 반환합니다. .
메소드 weakref.proxy(object[, callback])
이 메서드는 약한 참조를 사용하는 개체에 대한 프록시를 반환하는 데 사용됩니다. 반환된 개체는 ProxyType 또는 CallableProxyType일 수 있습니다.
메소드 weakref.getweakrefcount(객체)
이 메서드는 개체의 약한 참조 및 프록시 수를 반환하는 데 사용됩니다.
메서드 weakref.getweakrefs(객체)
이 메서드는 약한 참조 및 프록시 개체 목록을 반환하는 데 사용됩니다.
예시 코드
weakrefclass 가져오기 my_list(list):passnew_list =my_list('String') #my_list 클래스를 사용하여 목록 정의print(new_list)weak_ref =weakref.ref(new_list)new_weak_list =weak_ref()new_proxy =weakref.proxy(new_list) print(new_weak_list)print('프록시를 사용하는 객체:' + str(new_proxy))new_list가 new_weak_list인 경우:print("약한 참조가 있습니다.")print('약한 참조의 수:' + str(weakref.getweakrefcount (new_list)))del new_list, new_weak_list #두 객체 모두 삭제print("약한 참조는 " + str(weak_ref()))
출력
['S', 't', 'r', 'i', 'n', 'g']['S', 't', 'r', 'i', 'n', ' g']프록시를 사용하는 객체:['S', 't', 'r', 'i', 'n', 'g']약한 참조가 있습니다약한 참조 수:2약한 참조:없음사전>