접근지정 및 Property - Tirrilee/TechTalk GitHub Wiki
접근지정
Python에서는 이름 규칙을 통해 접근 지정을 한다.
- 밑줄이 없으면 이는 공개 모드로서 객체 외부에서 접근이 가능한다.
- 밑줄이 하나이면 이는 비공개 모드로서 객체 외부에서 접근해서는 안된다.
- 밑줄이 두 개이면 이는 보호 모드로서 객체 외부뿐만 아니라 상속받은 객체에서도 접근이 안된다.
# 접근 지정 예제
class Car:
def __init__(self):
self.price = 2000 # 공개 모드
self._speed = 0 # 비공개 모드
self.__color = "red" # 보호 모드
if __name__ == "__main__":
my_car = Car()
print(my_car.price) # 출력 성공
print(my_car._speed) # 출력 성공
print(my_car.__color) # 출력 실패
Property
객체의 속성만을 접근할 때 메서드를 호출하는 방식은 매우 성가시다. 그렇다고 객체의 속성을 바로 접근하는 것은 캡슐화를 어기는 행위며 이를 해결하기 위해 Property라는 개념이 나오게 되었다.
@property # 다음의 메서드 이름으로 접근가능 @메서드_이름.setter # 다음의 메서드 이름으로 설정가능
예시
class Car:
def __init__(self):
self._price = 0
self._speed = 0
self._color = None
@property
def price(self):
return self._price
@price.setter
def price(self, value):
self._price = value
if __name__ == "__main__":
my_car = Car()
my_car.price = 2000