본문 바로가기

Studying/Python

5. getter, setter, property

앞선 글에서 이야기 했듯이, python에서의 private 변수는 강제로 변수를 클래스 이름까지 작성해가면서 수정하지 않는 한, 접근할 수 없다. 

 

이 떄, 간편한 방법으로 나온 것이 get, set 메소드(getter, setter)를 활용하는 방법이다. 

 

get, set에 대한 함수명은 자율

위처럼 get, set 메소드를 활용하면, "_example__y" 처럼 직접 작성하지는 않지만, 이 역시도 지양하는 방법이다. 

 

어쨌든, 직접 인스턴스를 만들어 set 메소드를 통해 직접 지정해야하고,

 

수정하고 싶은 private 변수마다 get, set를 다 작성해야하므로 코드의 양이 방대하게 늘어나 가독성이 떨어질 수 있다. 

 

이보다 더 간결하고, 가독성 높은 방법이 property 데코레이터를 사용하는 것이다. 

 

getter, setter, deleter 부분의 메소드 이름이 전부 y로 설정되었지만

 

일반 속성와 같이 " a.y = 10 " 처럼 상황에 맞게 알아서 사용 가능한 것이 property의 기능이다. 

 

이런 pythonic한 방식인 property를 사용하면, 변수에 제약을 설정할 수 있고, getter와 setter의 효과를 동등하게 한다는 장점이 있다. 

 

또, 코드를 보다 직관적이고,  일관적이게 작성할 있게 해준다. 

 

setter에 제약 설정 예시