코딩뿌셔
[Basic_04] 클래스 본문
파이썬은 클래스 기반의 객체 지향 프로그래밍 언어입니다.
이때, 객체(Object)는 여러가지 속성을 가질 수 있는 대상을 말하며
클래스(Calss)는 객체를 효율적으로 생성하기 위해 만들어진 구문입니다.
그럼 학생 성적 관리 프로그램을 통해 자세히 알아보겠습니다.
학생 성적 관리를 위해서는 학생 이름, 학번, 과목별 성적 등이 필요합니다.
1. 객체
우선 딕셔너리로 학생을 표현하고 이를 리스트로 묶어 학생들을 표현했습니다.
이때, 여러가지 속성을 가질 수 있는 대상인 학생이 바로 객체입니다.
students = [
{'name' : '홍길동', '국어': 87, '수학': 98, '영어': 88, '과학': 95},
{'name' : '김미영', '국어': 92, '수학': 98, '영어': 96, '과학': 98},
{'name' : '김미애', '국어': 76, '수학': 96, '영어': 90, '과학': 91},
{'name' : '이봉철', '국어': 95, '수학': 94, '영어': 92, '과학': 90},
{'name' : '박지연', '국어': 64, '수학': 88, '영어': 92, '과학': 92}
]
객체를 활용해서 학생들의 점수 총합과 평균을 구해봅시다.
for st in students :
score_sum = st['국어'] + st['수학'] + st['영어'] + st['과학']
score_avg = score_sum / 4
print(st['name'], score_sum, score_avg, sep='\t')
홍길동 368 92.0
김미영 384 96.0
김미애 353 88.25
이봉철 371 92.75
박지연 336 84.0
2. 클래스
클래스는 다음과 같은 구문으로 생성하며,
클래스 이름과 같은 함수를 사용해서 객체를 생성합니다.
class 클래스명 :
내용
이러한 클래스를 기반으로 만들어진 객체를 인스턴스(instance)라고 합니다.
인스턴스(변수) 이름 = 클래스명()
학생 클래스를 생성하고 학생 5명을 선언해보겠습니다.
# 클래스 선언
class Student() :
pass
# 학생 선언
student = Student()
# 학생 리스트 선언
students = [
Student(),
Student(),
Student(),
Student(),
Student()
]
3. 생성자
이때, 클래스 이름과 같은 함수인 student를 생성자(constructor)라고 합니다.
이를 활용하여 클래스 내부에 __init__ 함수를 만들어 객체 생성 시 처리할 내용을 작성할 수 있습니다.
반드시 첫 번째 매개변수로 self를 입력해야하며 속성과 기능에 접근할 때 self.<식별자> 형태로 접근합니다.
# 클래스 선언
class Student :
def __init__(self, name, korean, math, english, science) :
self.name = name
self.korean = korean
self.math = math
self.english = english
self.science = science
# 학생 리스트 선언
students = [
Student('홍길동', 87, 98, 88, 95),
Student('김미영', 92, 98, 96, 98),
Student('김미애', 76, 96, 90, 91),
Student('이봉철', 95, 94, 92, 90),
Student('박지연', 64, 88, 92, 92)
]
# Student 인스턴스 속성 접근 방법
students[0].name
students[0].korean
students[0].math
students[0].english
students[0].science
이렇게 만들면 Student 인스턴스가 생성될 때 속성이 직접 추가됩니다.
4. 메서드
클래스가 가지고 있는 함수를 메서드(method)라고 합니다.
class 클래스명 :
def 메소드명(self, 매개변수) :
실행코드
# 클래스 선언
class Student :
def __init__(self, name, korean, math, english, science) :
self.name = name
self.korean = korean
self.math = math
self.english = english
self.science = science
# 메소드 작성
def get_sum(self) :
return self.korean + self.math + self.english + self.science
def get_avg(self) :
return self.get_sum() / 4
def to_string(self) :
return f'{self.name}\t{self.get_sum()}\t{self.get_avg()}'
# 학생 리스트 선언
students = [
Student('홍길동', 87, 98, 88, 95),
Student('김미영', 92, 98, 96, 98),
Student('김미애', 76, 96, 90, 91),
Student('이봉철', 95, 94, 92, 90),
Student('박지연', 64, 88, 92, 92)
]
print('이름', '총점', '평균', sep = '\t')
for student in students :
print(student.to_string())
이름 총점 평균
홍길동 368 92.0
김미영 384 96.0
김미애 353 88.25
이봉철 371 92.75
박지연 336 84.0
'Language > Python' 카테고리의 다른 글
[Pandas_02] 데이터 및 자료형 확인 (0) | 2022.07.27 |
---|---|
[Pandas_01] 파일 불러오기, 저장하기 (0) | 2022.07.27 |
[Basic_03] 함수 (0) | 2022.06.14 |
[Basic_02] 조건문, 반복문 (0) | 2022.06.12 |
[Basic_01] 데이터타입 (0) | 2022.06.12 |