파이썬 클래스 getter/setter, property, mangling
Code Snippets 2021. 4. 28. 12:10getter/setter는 내부 변수의 getter/setter 함수를 퍼블릭(public)으로 만들어 직접적으로 변수에 접근하지 못하도록 하여 캡슐화 하기 위해서 사용한다. 파이썬도 엄연히 객체지향 언어이니 getter/setter 함수를 이용하여 변수를 캡슐화할 수 있으며, 이때 파이썬에서는 property라는 녀석을 이용하게 된다. 정말 파이썬은 알면 알수록 별에 별게 다 있는 것 같다.
class Person:
def __init__(self, first_name, last_name):
self.name = name
self.age = age
def set_name(self, name):
if type(name) == str:
self.name = name
else:
print("error")
def get_name(self):
return self.name
name = property(get_name, set_name)
맹글링(mangling)이라는 것도 있다. 이건 아예 내부 변수로의 직접적인 접근을 원천적으로 차단하기 위한 목적으로 사용하는데, 언더바 두개(__)를 이용해서 변수명을 내부적으로 바꿔버리는 방법이다. 간혹 언더바 두개를 왜 이렇게 많이들 쓰나 싶었는데 이게 다 이유가 있었던 거다. 근데 이게 변수명 앞에 클래스명을 넣는 방식이라 왠지 눈 가리고 아웅하는 것 같기는 하다... (ㅋㅋ)
class Example:
def __init__(self, num1, num2):
self.num1 = num1
self.__num2 = num2
exam = Example(1, 2)
exam.__num2 # 에러 발생
exam._Example__num2 # 정상 출력. 맹글링에 의해 변수명을 내부적으로 바뀌버림
'Code Snippets' 카테고리의 다른 글
파이썬 판다스 소스코드 메모 (0) | 2021.04.29 |
---|---|
파이썬 넘파이 행렬 생성 관련 함수 정리 (0) | 2021.04.28 |
파이썬 list comprehension (0) | 2021.04.28 |
파이썬 decorator (0) | 2021.04.22 |
파이썬 map, filter, reduce 함수 (0) | 2021.04.22 |