#python #anaconda #jupyter-notebook #visual-code #html #css #javascript #http

제목답변입니다 ^^2018-11-10 19:33
작성자 Level 10
첨부파일스크린샷 2018-11-10 오후 9.24.53.png (216.8KB)

본인이 접근한 __countStudent는 원래 class Student를 만들면서 정의한 멤버 변수 __countStudent 가 아닙니다.

첨부의 코드에서 2번 print를 보면, 생성한 객체 수가 없어서 0이 출력됩니다 (멤버 변수 __countStudent가 0으로 초기화된 후 유지된 겁니다).

3번 print를 실행해보면, 우리가 정의한 __countStudent는 이름이 바뀌어서 _Student___countStudent로 바뀌었는데,

이렇게 해서 Python은 Private 개념을 구현합니다.

이런 상황에서 4번 print를 실행하면 에러가 납니다. Private로 막혀 있어서지요.

궁금하면 주석을 제거해 보세요.

그런데 Student.__countStudent = 4를 실행하면, Python은 class Student에 기존 __countStudent가 아닌 새로운 변수 __countStudent 를 추가합니다.

이는 앞서 객체안에서 정의한 변수하곤 완전히 다른 놈입니다.

따라서 6번 print를 실행하면, 원래 우리가 정의한 변수 __countStudent (내부적으로 이름이 _Student___countStudent)의 값인 0이 출력됩니다.

그리고 7번 printf를 실행하면, 원래 우리가 class 정의시 정의한 변수 __countStudent 가 여전히 _Student___countStudent로 있으며,

방금 새로 추가한 변수가 따로 __countStudent로 있는 것을 볼수 있습니다.

마지막으로 8번 print를 실행하면, 본인이 추가한 변수의 값인 4가 나오지요.

즉,, 본인은 완전히 새로운 변수를 추가한 후, 이의 값을 출력한 것입니다.

이해가 되나요?

 
댓글
이전16번쨰 실습 Private Attribute 과정중에서요...2018-11-10
다음텀프로젝트 제안서2018-11-09