본문으로 바로가기

클래스 (생성자,소멸자,캡슐화)

category SECURITY/Python 2017. 4. 19. 21:19


   클래스 (생성자,소멸자,캡슐화)


   생성자  __init__

- 객체가 선언될때 자동으로 호출된다.

- 인자가 있을 때와 인자가 없을때로 2가지 경우가 있다.

   인자가 있을 때에는 def __init__ ( self, 변수 ):

   인자가 없을 때에는 def __init__ ( self ):

   인자가 있을 때 메서드 호출할 때 선언하지 않게 되면 에러가 발생한다.

 EX)

객체가 선언되면 생성자 __init__이 실행되는 것을 볼 수 있습니다.

인자가 있는 경우에는 인자를 쓰지 않을 경우에는 이런 에러메시지를 확인해볼 수 있습니다.


   소멸자  __del__

- 객체를 지울 때 사용된다.

EX)

객체를 선언하고나서 다시 객체를 삭제했을 경우에는 소멸자 __del__이 실행되는 것을 확인할 수 있습니다.



   캡슐화(은닉제어)

- 객체 지향 프로그래밍에서는 멤버 변수에 대한 외부로부터 접근을 허용하지 않고 멤버 메서드를 통해서 접근하도록 프로그래밍 하는 것을 권장하고 있습니다.

- 외부에 노출할 것과 감출 것을 결정하는 것

- 파이썬에서는 캡슐화가 정확히 이루어지지는 않는다.

  강제로 볼 수가 있다. 왠만하면 캡슐화 해주는 것이 좋다

- 내부에서만 접근 가능한 변수

- 변수이름앞에 _ 를 붙여줍니다.

1) @property

  - 멤버 변수에 접근할 때

2) @ 메서드이름.setter

  - 멤버 변수 값 설정(변경)

  - 실제로는 메서드 호출을 통해서 객체에 접근하는 것


EX) num 이라는 클래스 변수에 _ 를 설정하게 된다면 속성에서 안보이는 것을 확인할 수 있다.

[ 파이썬 결과창 ]


EX) name이라는 변수에 _를 설정하면 확인할 수 없는데 property와 setter를 설정하므로써 접근이 가능하고 변경까지 가능한 것을 확인할 수 있다.

[ 파이썬 결과창 ]



'SECURITY > Python' 카테고리의 다른 글

클래스 (상속)  (0) 2017.04.20
클래스 (Static Method)  (0) 2017.04.20
클래스 (변수)  (0) 2017.04.19
정렬(합병정렬)  (0) 2017.04.18
정렬(거품정렬)  (0) 2017.04.18