티스토리 뷰
반응형
그냥 지금 너무 어이가 없어서 저장용
A Class에서 list_a와 함께 B class 인스턴스를 생성함
B class 내부에서
list_new = list_a 함
그리고 B class thread에서 A Class로 signal
signal 받았을 때 list_a의 첫 번째 원소를 삭제하는데
list_new도 영향을 받음
그래서 B Class 내부에서 list_new = list_a.copy()로 해야함
ㅋㅋ
c만 하다 보니 이 상황 자체가 어이없음ㅋㅋ
self.thread_take_out_amount = ThreadTakeOutAmount(
self.found_compass,
self.user_input_amount,
)
def remove_coordinate(self, index):
if index < len(self.found_compass):
del self.found_compass[index]
class ThreadTakeOutAmount(QThread):
delete_element_signal = Signal(int)
def __init__(self, coordinate, amount):
super().__init__()
self.coordinate = coordinate
def run(self):
self.delete_element_signal.emit(i)
이러한 현상이 발생하는 주요 원인은 Python의 리스트가 참조형 객체이기 때문입니다. 클래스를 생성할 때 self.found_compass를 ThreadTakeOutAmount의 coordinate 인자로 전달하면, ThreadTakeOutAmount 클래스 내의 self.coordinate는 self.found_compass와 동일한 리스트 객체를 참조하게 됩니다. 즉, 하나의 리스트 객체에 대해 두 변수가 참조를 공유하고 있습니다. 따라서 found_compass 리스트에서 요소가 삭제되면, 이 변경 사항이 self.coordinate에도 반영됩니다.
'Python' 카테고리의 다른 글
pymssql 연결 안 됨 (0) | 2024.09.02 |
---|---|
[Python] onedrive file upload example(파이썬 원 드라이브 파일 업로드 예제) (0) | 2024.02.08 |
ModuleNotFoundError: No module named 'MySQLdb' (0) | 2023.08.09 |
mac m1, m2 anaconda locust ValueError: greenlet.greenlet size changed, may indicate binary incompatibility (0) | 2023.08.06 |
클라이언트 간 메시지 송수신 스터디(nginx + fastapi + celery + rabbitMQ) (0) | 2023.08.04 |
댓글
티스토리 방명록
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
Blog is powered by
Tistory / Designed by
Tistory
Contact: j0n9m1n1@gmail.com
Contact: j0n9m1n1@gmail.com