PlotHandler
클래스의 인스턴스가 여러 개 생성되었습니다. 인스턴스는 변수를 비공개로 유지해야합니다. 하지만 내가 관리하는 방식으로 문제를 발견하기가 어려웠습니다 개인 목록 변수가 인스턴스간에 공유되었습니다! 그리고 그것도 누출에 대한 명백한 출처가없는 것입니다.개인 목록 변수가 실수로 인스턴스 개체간에 공유됩니다.
내 디버깅은 목록을 수정하는 개인 멤버 함수가 서로 다른 개체 인 경우에도 같은 목록을 볼 수 있다고 말했습니다.
이 문제가 "문제"입니까? 이 문제를 해결하는 가장 좋은 방법은 무엇입니까?
여기 구현의 관련 부분이 있습니다! 올 CAPS 주석을 참조하십시오
파일을 PlotHandler 구현 :
class PlotHandler(wx.Frame):
__crop_section = None
__projection = None
__crop_xcord = None
_band_data = [] #THIS GETS SHARED
def _on_plot_click(self, xcord): #CALLED BY ANOTHER OBJECT
band = self._analyze_band(xcord)
self._band_data.append(band)
...
이 PlotHandlers을 관리한다는 부모 클래스 :
class MainFrame(wx.Frame):
__close_callback__ = None
_plot_handlers = []
def __init__(self, parent, title):
...
def InitUI(self):
...
img_handler = ImageHandler(panel)
self.img_src.register_callback(img_handler.update_image)
#you need to call PlotHandler(parent, cropped)
img_handler.register_sample_callback(self._create_new_plot_handler)
...
def _create_new_plot_handler(self, cropped_sample):
self._plot_handlers.append(PlotHandler(self, cropped_sample)) #CREATE THEM
에서 그것을 정의해야합니다 (각각의 객체가 변수에 대한 자신의 참조가)'_band_data'는이 인스턴스간에 공유되는 것이 정상입니다, 클래스 속성입니다. –
정상적인 동작입니까? 정교하게 써 주시겠습니까? – aitchnyu
이니셜 라이저로 이동하면 문제가 해결됩니다. –