파이썬 프로그래밍 참조 목록의 고전적인 오류

 다음 코드를 고려

클래스 사용자 :
     데프  __init__ (자기 이름, 취미 = []) :
        self.name = 이름
        self.hobby = 취미

    데프 add_hobby (자기, 취미) :
        self.hobby.append (취미)

    데프 remove_hobby (자기, 취미) :
        self.hobby.remove (취미)

    데프  __str__ (자동) :
         리턴 self.name + ' , ' + ' - ' .join (self.hobby)


경우  __name__ == ' __main__ ' :
    u1 = User ( ' 소명 ' )
    u1.add_hobby ( ' 축구 ' )
     전단 (U1)   # 샤오밍 축구 
    인쇄 (ID (u1.hobby))   # 2,074,461,954,696 

    U2 = 사용자 ( ' 작은 강한 ' )
    u2.add_hobby ( ' ' )
     전단 (U2)   # 조금 강한 축구 - 뷰티 
    인쇄 (U1)   # 샤오밍 축구 - 뷰티 
    인쇄 (ID (u2.hobby))   # 2,074,461,954,696

 

 

분석 :

  우리는 두 개의 사용자 개체가, U1, U2 있습니다 만들었지 만 U2의 속성을 수정 취미는 U1은 객체 취미의 특성의 변화가 발생했습니다

  근본 원인이기 때문에 생성 U1, U2 대상물이 취미 목록 객체 공기의 기본 통과하지 않고,이 공기는, 동일한 메모리 어드레스에 대한 포인트 전역 고유 그래서 수정 수도 U2의 U1의 변화 원인 및

  우리가 참조 목록을 통과 할 때 따라서, 특별한주의해야한다.이 구덩이이다.

추천

출처www.cnblogs.com/z-qinfeng/p/12041332.html