bigdata_bootcamp_12th/daily review
220718_부트캠프시작_python_3주_1일차 (복기)
별망고
2022. 7. 18. 22:29
1. 네비게이션 업데이트 서비스 만들기
print('안녕하세요 MS내비 업데이트 서비스 알림입니다.')
def navigation() :
try :
import datetime
today = datetime.datetime.now()
li_y = int(input('내비 구매 연도를 입력해주세요 ex) 2022 (yyyy) '))
li_m = int(input('내비 구매 월을 입력해주세요 ex) 07 (mm) '))
li_d = int(input('내비 구매 일자를 입력해주세요 ex) 18 (dd) '))
if today.year - li_y > 1 :
print("무료 업데이트 대상자입니다. 무료 업데이트를 진행합니다. ")
elif today.year - li_y == 1:
if today.month - li_m > 0 :
print("무료 업데이트 대상자입니다. 무료 업데이트를 진행합니다. ")
elif today.month - li_m == 0 :
if today.day - li_d > 0 :
print("무료 업데이트 대상자입니다. 무료 업데이트를 진행합니다. ")
else :
print("무료 업데이트 대상자가 아닙니다. 유료 업데이트를 원하시는 경우 010-3021-7819 김민식 과장에게 연락부탁드립니다. ")
except Exception as error_all :
print('올바른 형식이 아닙니다. 다시 시작해주세요. ', error_all)
navigation()
try와 except 를 이용해 형식 오류가 나면 에러메세지를 출력
if와 elif 그리고 datetime 을 이용한 년 -> 월 -> 일 순으로 4년이 지났으면 무료 업데이트 대상자 출력 아니면 무료업데이트 일자 출력으로 간단한 구성을 통해 복습 완료
2. class(self 사용), method(static, classmethod), @property @함수이름.setter
1) class 지정 후 self.인스턴스 = '기본값'
- self.인스턴스 를 통해 클래스변수가 아닌 객체변수 (인스턴스변수) 를 활용하여 추후 지정한 인스턴스마다
각각 객체를 부여하여 사용 가능. (쉘로우 카피방식으로 같은 변수에 데이터가 들어가도 주소값이 변하여 다름)
- ex
class Person:
성별 = '남자' # 클래스 변수
def __init__(self, 이름, 나이): # __inti__ 을 통해 self 지정 (인스턴스 변수 지정)
self.__이름 = 이름 # __는 고정 값을 뜻함
self.__나이 = 나이
2) method(static, classmethod)
@staticmethod # 고정된, 한번 만들어놓으면 자식 클래스에서도 같은 방식으로 동작
def method1():
return Person.nation
@classmethod # 해당 클래스에 맞게 메서드가 다른 지점을 참조하여 동작
def method2(aa):
print('aa', aa)
return aa.성별
3) @property @함수이름.setter
@property
def outer_age(self): # getter - 값을 받아오는 함수
print('나이 출력 합니다.')
return self.__나이 # 함수를 통하여 리턴 값을 받아 직접적인 변경 제한 (은닉)
@outer_age.setter # 함수명.setter
def outer_age(self, 나이): # setter - 값을 변경하는 함수 사용하여 제작자만 변경가능하게
print('나이 변경 합니다.')
if isinstance(나이, int): # isinstance(age, int) int 클래스 출신인지 확인하는 명령어
self.__나이 = 나이
else:
print('숫자 아님 저리가세요!')