728x90
📌 문제
https://swexpertacademy.com/main/main.do
📌 문제 접근 방법
[property]
- 입력데이터를 검증하지 않는다면? 잘못된 입력이 들어올 수 있음
- 따라서 적절한 멤버 필드의 접근 제한 필요! -> 인스턴스 변수의 접근 제한 기능
class Person :
...
self.__name = name # 던더스코어를 앞에 붙이면 프라이빗 필드 생성됨
- 프라이빗 필드를 생성하면 getter/setter 메서드의 제공 여부에 대한 고민이 필요
- getter : 멤버를 읽어오는 메서드
- setter : 멤버를 변경하는 메서드
class Person :
...
def get_name(self) : # __name 필드의 값을 반환하는 getter 메서드
return self.__name
def set_age(self, age) :
if age < 0 :
raise TypeError('나이는 0이상의 값만 허용합니다.')
self.age = age
- 데코레이터 기능 : getter/setter를 대신하는 기능
class Person :
...
@property
def name(self) : # 변수 이름과 같은 메서드를 만들어 사용 가능
...
@age.setter
def age(self, age) :
if age< 0 :
...
members[0].age = 22 # age는 메서드지만 age@property를 이용해 변수처럼 값 저장
📌 코드
class Student :
def __init__(self, name) :
self.__name = name
@property
def name(self) :
return self.__name
def __str__(self) :
return f'이름: {self.name}'
class GraduateStudent(Student) :
def __init__(self, name, major):
super().__init__(name)
self._major = major
@property
def major(self) :
return self._major
def __str__(self) :
return f'이름: {self.name}, 전공: {self.major}'
hong = Student('홍길동')
print(hong)
lee = GraduateStudent('이순신', '컴퓨터')
print(lee)
728x90
'ALGORITHM > SW Expert Academy' 카테고리의 다른 글
[SWEA/Python] 1954. 달팽이 숫자 (0) | 2021.08.09 |
---|---|
[SWEA/Python] 1945. 간단한 소인수분해 (0) | 2021.08.09 |
[SWEA/Python] 6311. 내장함수 4 (0) | 2021.07.24 |
[SWEA/Python] 6326. 함수의 기초 7 (0) | 2021.07.22 |
[SWEA/Python] 6323. 함수의 기초 4 (0) | 2021.07.22 |
댓글