캡슐화 |
- 객체를 사용하는 사람이 함부로 사용 못하게 변수와 함수를 숨기는 작업입니다.
- 인스턴스 변수와 인스턴스 함수 앞에 __ 를 붙이면 된다.
[ 파이썬 - 클래스 캡슐화 ] 원의 반지름을 입력해서 둘레와 넓이를 구하는 프로그램입니다.
class Circle:
def __init__(self, 반지름):
self.반지름 = 반지름
self.파이 = 3.14
def 둘레(self):
return 2 * self.파이 *self.반지름
def 넓이(self):
return 3.14 * (self.반지름 **2)
circle = Circle(10)
print(circle.둘레())
print(circle.넓이())
▶ 만약, 사용자가 반지름을 음수(-)로 입력한다면?
class Circle:
def __init__(self, 반지름):
if 반지름 < 0: ########
raise TypeError("반지름은 0 이상이어야 합니다.")
self.반지름 = 반지름
self.파이 = 3.14
def 둘레(self):
return 2 * self.파이 *self.반지름
def 넓이(self):
return 3.14 * (self.반지름 **2)
circle = Circle(10)
print(circle.둘레())
print(circle.넓이())
▶ 만약, 강제로 반지름 값을 음수로 변경해 버린다면?
class Circle:
def __init__(self, 반지름):
if 반지름 < 0:
raise TypeError("반지름은 0 이상이어야 합니다.")
self.반지름 = 반지름
self.파이 = 3.14
def 둘레(self):
return 2 * self.파이 *self.반지름
def 넓이(self):
return 3.14 * (self.반지름 **2)
circle = Circle(10)
circle.반지름 = -10 ###########
print(circle.둘레())
print(circle.넓이())
[ 해결 방법 - 캡슐화 ] 변수명앞에 __ 를 붙이면 외부에서 값을 변경할수 없습니다.
class Circle:
def __init__(self, 반지름):
if 반지름 < 0:
raise TypeError("반지름은 0 이상이어야 합니다.")
self.__반지름 = 반지름
self.__파이 = 3.14
def 둘레(self):
return 2 * self.__파이 *self.__반지름
def 넓이(self):
return self.__파이 * (self.__반지름 **2)
circle = Circle(10)
circle.__반지름 = -10 ##
print(circle.둘레())
print(circle.넓이())
'파이썬' 카테고리의 다른 글
35. 파이썬 클래스 - 상속 (0) | 2024.04.03 |
---|---|
34. 파이썬 클래스 - 겟터(getter) 와 셋터(setter) (0) | 2024.04.01 |
32. 파이썬 클래스 - 기본문법 (0) | 2024.03.29 |
31. 파이썬 리스트 컴프리헨션 (0) | 2024.02.21 |
30. 파이썬 map함수 - 2 (0) | 2024.02.04 |