[Day4] 파이썬 기초 문법III
Python Object Oriented Programming
Module and Project
중요
@property
class Person:
def __init__(self):
self.age = 0
john=Person()
print(john.age) # 0
john.age=28
print(john.age) # 28
파이썬에서 다음과 같이 class를 정의하게 되면 age직접 접근하여 값을 바꿀 수 있다. 이게 문제가 된다.
왜냐하면 클래스를 만들고 변수를 바꿀 때 보통 함수를 통해서 변수를 바꾼다. 이유는 변수의 조건 등을 줄 수 있기 때문이다. age의 값을 바꿀 때 사용자가 정수의 값이 아닌 문자열 값을 넣는다면, error문구를 내보내야 한다.
class Person:
def __init__(self):
self.age = 0
def set_age(self,val):
if type(val) == int:
self.age=val
else:
print('숫자 값을 입력해 주세요!!')
john=Person()
john.set_age('seven') # 숫자 값을 입력해 주세요!!
john.set_age(28)
print(john.age) # 28
john.age='seven'
print(john.age) # 'seven'
여기서 직접 접근하여 값을 바꿀 수 있다면 age의 값은 'seven'으로 바뀔 수 있고 이것은 class구조가 이상해 질 수 있다.
이렇게 직접 접근을 막기 위해 변수 앞에__
을 붙여 준다.
class Person:
def __init__(self):
self.__age = 0
john=Person()
print(john.__age) # error발생 직접 접근 불가
클래스에서 메서드를 통하여 속성의 값을 가져오거나 저장하는 경우. 값을 가져오는 메서드를 getter, 값을 저장하는 메서드를 setter로 부른다.
class Person:
def __init__(self):
self.__age = 0
def get_age(self): # getter
return self.__age
def set_age(self, val): # setter
if type(val) == int:
self.__age = val
else:
print('숫자 값을 입력해 주세요!!')
john=Person()
john.set_age('str') # 숫자 값을 입력해 주세요!!
john.set_age(20)
print(john.get_age()) # 20
이렇게 함수를 통해서 접근하게 되는데 @property
를 사용하면 getter, setter를 간단하게 구현할 수 있습니다.
@property
@메서드이름.setter
class Person:
def __init__(self):
self.__age = 0
@property
def age(self): # getter
return self.__age
@age.setter
def age(self, val): # setter
if type(val) == int:
self.__age = val
else:
print('숫자 값을 입력해 주세요!!')
john=Person()
john.age='seven' # 숫자 값을 입력해 주세요!!
print(john.age) # 0
john.age=20
print(john.age) # 20
getter, setter 메서드의 이름을 잘 보면 둘다 age이다. 그리고 getter에는 @property
가 붙어있고, setter에는 @age.setter
가 붙어있다. 즉, 값을 가져오는 메서드에는 @property
데코레이터를 붙이고, 값을 저장하는 메서드에는 @메서드이름.setter
데코레이터를 붙이는 방식이다. 변수에 직접 접근하는 것 처럼 보이지만 실제로는 변수에 직접 접근하고 있지 않다는 것을 john.age='seven'이 숫자 값을 입력해 주세요!!! 구문을 출력한 걸 보면 알 수 있다.
피어세션
파이썬 디버깅 : pythontutor
try - except를 생활화
Git을 과제에 적용
- Git을 통한 협업 연습
- 멋진(효율적이고 깔끔) 코드 제작
과제
정규표현식
정규표현식에서 메타 문자가 존재하는데 []안에 메타 문자를 넣으려면 다음과 같은 메타 문자는 \를 붙어 줘야한다.
import re
special_chr=re.compile('[문자열]')
여기서 문자열에 메타 문자를 넣게 되면 \를 넣어서 표현 해 주어야 한다. \
, [
,]
, .
,*
,+
,{
,}
,?
,|
,^
,$
로 총 12개가 메타 문자이다. is_validated_english_sentence함수를 만들때 특수 문자를 체크하는 부분에서 사용.
'AI > 부스트 캠프 AI tech' 카테고리의 다른 글
[Day9] Pandas II,확률론 (0) | 2021.01.28 |
---|---|
[Day8] Pandas I,딥러닝 학습방법 이해하기 (0) | 2021.01.27 |
[Day7] 경사하강법 (0) | 2021.01.26 |
[Day6] Numpy/벡터/행렬 (0) | 2021.01.25 |
[Day 5] 파이썬으로 데이터 다루기 (0) | 2021.01.22 |
[Day3] 파이썬 기초 문법II (0) | 2021.01.20 |
[Day 2] 파이썬 기초 문법 (0) | 2021.01.19 |
파이썬/AI 개발환경 준비 (0) | 2021.01.18 |