getter
-
파이썬 프러퍼티 사용하여 일관되게 속성에 접근하라Programmer/Programming 2018. 1. 17. 11:56
파이썬의 프러퍼티(property)를 설명한 책과 글은 많음으로 필요성만 살짝 언급하고 지나가겠다. 파이썬에서는 공개 애트리뷰트(public attribute)을 직접 접근(access)하는 것이 관례이다. class A: def __init__(self): self.x = 0 a = A() a.x = 1 print('{}'.format(a.x)) 그런데, 비공개(private) 애트리뷰트가 필요한 경우가 있다. 이들을 외부에서 접근하기 위해서는 엑세스 함수-예를 들면, get_xxx(), set_xxx()와 같은 것-을 사용해야 한다. 문제는 접근 형식이 관례와 달라지는데 있다. 즉, 애트리뷰트가 공개인지 비공개인지 일일이 신경써야 한다. 이럴 때, 프러퍼티를 사용하면 동일한 표현 형식으로 접근이 가능..
-
엑세스 함수(getter/setter)를 올바로 사용하기Programmer/Programming 2017. 2. 13. 13:05
객체의 속성을 읽고 쓰는 일관된 표현 방식을 제공하라. 엑세스 함수를 추천한다.[각주:1] 엑세스 함수를 사용하면 의존성 깨짐의 걱정 없이 구현을 바꿀 수 있다. Null을 할당하는 것을 허용하지 않거나 객체의 속성을 외부에서 바꿀 수 없는[각주:2] 규칙이 더해질 수 있다. 메모이제이션(memoization)[각주:3]과 같은 기능을 추가할 수도 있다. 자료형과 알고리듬이 변경되기도 한다. 엑세스 함수를 사용했으면, 이것을 이용하는 의존 모듈의 수정 없이 규칙과 기능을 추가할 수 있다. 추상적인 자료형을 사용한 엑세스 함수는 객체의 자료형 변경을 용이하게 한다. 위 이유는 명확하니 굳이 설명할 필요가 없다. 모호한 상황에서도 엑세스 함수 강제가 정당한지 생각해보겠다. 멤버 변수의 자료형, 알고리듬의 변..