#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http 제목class 관련 질문2024-06-01 11:47작성자수강생class Server: def __init__(self): self.numorderlist = [] self.numlist = [] self.orderlist = [] def makeOrder(self, num, orderlist): if not num in self.numlist: self.numorderlist.append([num, orderlist]) self.numlist.append(num) self.orderlist.append(orderlist) return [num, orderlist] else: return -1 def giveService(self, num, plusorder): #why??????????????? if num in self.numlist: idx = self.numlist.index(num) if isinstance(plusorder, str): self.orderlist[idx].append(plusorder) self.numorderlist[idx][1].append(plusorder) else: self.orderlist[idx].extend(plusorder) self.numorderlist[idx][1].extend(plusorder) return self.numlist[idx], self.orderlist[idx] else: return -1, -1s = Server()s.makeOrder('0001', ['pizza', 'pie'])s.makeOrder('0002', ['pizza', 'pie', 'pasta'])s.makeOrder('0003', ['pizza'])print(s.giveService('0002', 'coke'))print(s.numlist)print(s.orderlist)print(s.numorderlist)위 프로그램을 실행하면 ('0002', ['pizza', 'pie', 'pasta', 'coke', 'coke']) ['0001', '0002', '0003'] [['pizza', 'pie'], ['pizza', 'pie', 'pasta', 'coke', 'coke'], ['pizza']] [['0001', ['pizza', 'pie']], ['0002', ['pizza', 'pie', 'pasta', 'coke', 'coke']], ['0003', ['pizza']]]가 출력됩니다.giveService 항목에서 'coke'하나만 추가했는데 어째서 'coke'가 2번 출력되나요??보니까 self.orderlist[idx].append(plusorder) self.numorderlist[idx][1].append(plusorder)이 항목에서 위나 아래 하나만 실행돼도 orderlist와 numorderlist가 서로 동기화(?)되어 정보가 입력됩니다.그래서 위 실행은 결국 정보를 2번 입력하는 꼴이 됩니다. 하지만생성자, makeOrder 매서드, giveService 매서드 그 어느 것에서도orderlist와 numorderlist 사이에 관계를 정의한 적이 없는데 어째서 이런 일이 발생하는 건가요? 목록수정삭제답변글쓰기 댓글 [1] 댓글작성자(*)비밀번호(*)내용(*) 댓글 등록 더보기이전23년 1학기 기말고사 [온라인수업] 기출문제 4번 질문whs2024-06-02다음데이터 콜렉션 타입 , 파일 관련 질문 드립니다 룰루2024-05-30 Powered by MangBoard | 워드프레스 쇼핑몰 망보드