일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 블록체인기부
- 엔지닉
- GSAT기본서추천
- 온라인봉사학교
- 토익스피킹인강
- GSAT류병주
- GSAT인강
- 반도체 취업
- 토커비
- 체리플랫폼
- 파이썬
- 토익스피킹시험시간
- 토익스피킹무료
- 토커비마이크
- 토커비토익스피킹
- 김변수와 시작하는 코딩생활
- 김변수
- 토익스피킹레벨
- GSAT온라인스터디
- 기부좋은날체리
- 토익스피킹개정
- 파이썬 클래스
- 토익스피킹시험
- 토익스피킹독학
- GSAT홍기찬
- 체리스쿨
- GSAT문제집
- 파이썬 함수
- 한양대ERICA
- 위포트
- Today
- Total
승이네 반도체
8/22 (월) 김변수와 시작하는 코딩생활 with 파이썬 스터디 14일차(필수 클래스 / 할인된 가격을 알려주는 계산기 클래스 만들기) 본문
8/22 (월) 김변수와 시작하는 코딩생활 with 파이썬 스터디 14일차(필수 클래스 / 할인된 가격을 알려주는 계산기 클래스 만들기)
승이네 2022. 8. 22. 00:10학습 내용 : 파트14. 클래스
필수 과제 : 1-13. 할인된 가격을 알려주는 계산기 클래스 만들기
14. 클래스
14-1. 클래스와 객체
클래스는 프로그래밍에서 아주 중요한 개념입니다.
클래스를 잘 사용하면 코드의 중복을 줄일 수 있고, 전역 변수를 무한정 만들 필요가 없어집니다.
클래스는 일종의 틀과 같으며, 클래스를 통해 우리에게 필요한 객체를 만들어 낼 수 있습니다.
와플을 예로 들면, 클래스의 기본 틀(와플 틀)을 만들어 놓고, 원할 때마다 객체(와플)를 생성할 수 있습니다. 또한 객체마다 고유한 속성(사과잼 와플, 딸기 누텔라 와플, 초코 바나나 와플 등)을 주고 활용할 수 있습니다.
class 클래스명: #파이썬에서 클래스 이름은 보통 '대문자'로 시작하는 단어로 짓습니다.
클래스에 들어갈 코드 #클래스에서 사용할 변수와 함수 등을 적습니다.
그리고 클래스를 객체로 만들 때는 다음과 같습니다.
객체명 = 클래스명()
클래스 안에는 클래서에서만 쓰이는 변수를 선언할 수 있습니다.
객체로 클래스 안에 있는 변수나 함수에 접근할 때는 객체명.변수명이나 객체명.함수명()이라고 적습니다.
Waffle이라는 Class를 생성하고 객체를 만들어 사용하는 코드입니다.
1, 2줄에서 Waffle이라는 클래스를 생성하고, 클래스 안에서 변수 name에 'waffle'이라는 문자열을 저장했습니다.
3, 4줄에서 choco는 Waffle의 객체입니다. 따라서 choco.name을 입력하면 name에 들어있는 waffle을 입력합니다.
7, 8줄에서 banana는 Waffle의 객체이기 때문에 banana.name도 마찬가지로 waffle이 출력됩니다.
이렇게 클래스 안에 변수를 직접 선언하면 변수가 모든 객체에 동일하게 적용되기 때문에 추천하지 않는 방식입니다.
클래스의 변수를 변경할 때 모든 객체의 변수가 바뀌는 코드입니다.
14-2. 클래스와 메소드
클래스는 기본적으로 객체를 동일한 틀로 만들되, 객체별로 각각의 특징을 가지게 할 목적으로 사용합니다.
앞에서 클래서에 변수를 직접 선언하면 모든 객체가 같은 속성을 가지게 됩니다.
그렇다면 틀은 같지만 서로 다른 속성을 가진 객체를 만들려면 어떻게 해야 할까요?
클래스 안에서 직접 변수를 사용하는 함수를 사용하면 객체들이 서로 다른 속성을 가지게 만들 수 있습니다.
이러한 클래스 내부의 함수를 메소드라고 부릅니다.
choco의 변수 name에는 'choco waffle'이 저장되고, banana의 변수 name에는 'banana waffle'이 저장된 상태입니다.
이처럼 클래스 안에 변수를 직접 선언하는게 아니라 메소드를 이용해 각 객체에 변수를 선언하면 객체별로 독립적인 속성을 나타낼 수 있습니다.
Avatar 클래스로 생성된 객체 seung에 속성을 부여하는 코드입니다.
이처럼 출력용 메소드 printAvatar(self)를 입력하여 self 이외의 다른 인풋을 받지 않게 합니다.
14.3 클래스와 생성자
아바타의 이름과 HP를 속성으로 가지고 있는 Avatar 클래스 입니다.
여기서 Avatar 클래스로 생성된 객체는 name과 hp에 해당하는 값을 가져야 합니다.
name과 hp를 설정하지 않은 상태에서 increaseHp(), decreaseHp(), printHp() 같은 메소드를 호출하면 다음과 같이 오류가 발생합니다.
Avatar 클래스로 생성된 객체가 name과 hp 값을 가지고 있어야 한다면 애초에 객체를 생성할 때 미리 설정해 두면 좋을 것입니다.
이렇게 한 클래스의 객체들을 생성할 때 일정한 속성을 적용하기 위해 존재하는 것이 생성자입니다.
생성자는 객체가 생성될 때 자동으로 호출되는 메소드입니다.
메소드 이름으로 __init__을 입력하면 파이썬은 그것이 생성자인지 자동으로 인식합니다.
Avatar 클래스 안에 생성자 __init__을 사용하는 코드입니다.
setAvatar 대신 __init__의 함수를 사용하게 되면 seung.Avatar("seung", 0)으로 된 부분을 생략할 수 있습니다.
(대신 15, 18줄과 같이 Avatar클래스에 직접 넣어야합니다.)
self 외의 인풋들까지 받는 경우에 반드시 그 인풋들에 해당하는 데이터를 함꼐 넣어줘야 합니다.
만약 Avatar 클래스의 객체를 생성할 때 name과 hp 값을 넣지 않으면 다음과 같은 오류가 발생합니다.
1-13. 할인된 가격을 알려주는 계산기 클래스 만들기
원가와 할인율(%)을 입력하면 할인이 적용된 최종 금액을 알려주는 계산기 클래스를 만들어 보세요.
클래스 개념은 함수와 비슷하다고 느껴 조금은 쉽게 느껴지는것 같습니다.
예제를 보니 함수 두개만을 이용하여 return으로 최종 금액을 받았는데 제 코드가 조금 더 보기 좋은 것 같습니다. ㅎㅎ