반응형
클래스
class 클래스 이름:
클래스 내용
인스턴스 이름(변수 이름) = 클래스 이름()
※ 여기서 클래스 이름()은 생성자라고 한다
생성자(constructor)
class 클래스 이름:
def __init__(self, 추가적인 매개변수):
pass
객체에 초깃값을 설정해야 할 필요가 있을 때는 생성자를 구현하는 것이 안전한 방법이다.
생성자(Constructor)란 객체가 생성될 때 자동으로 호출되는 메서드를 의미한다.
파이썬 메서드 이름으로 __init__를 사용하면 이 메서드는 생성자가 된다.
파이썬 메서드의 첫 번째 매개변수로 반드시 self를 입력해야 한다.
객체를 호출할 때 호출한 객체 자신이 전달되기 때문에 self를 사용한 것이다.
메서드(method)
클래스 내부에 구현된 함수
class 클래스 이름:
def 메서드 이름(self, 추가적인 매개변수):
pass
예제1
- 학생들의 과목별 성적의 총합과 평균을 구하는 클래스 만들기
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# 클래스 선언
class Student:
def __init__(self, name, korean, math, english, sience):
# 인스턴스 변수 초기화
self.name = name
self.korean = korean
self.math = math
self.english = english
self.sience = sience
def get_sum(self):
return self.korean + self.math +\
self.english + self.sience
def get_average(self):
return self.get_sum() / 4
def to_string(self):
return "{}\t{}\t{}".format(\
self.name, self.get_sum(), self.get_average())
# 학생 리스트를 선언
students = [
Student("윤인성", 99, 89, 78, 59),
Student("연하진", 69, 71, 70, 65),
Student("구지연", 99, 79, 80, 81),
Student("나선주", 79, 83, 72, 80),
Student("윤아린", 90, 86, 98, 100),
Student("윤인성", 93, 80, 79, 80)
]
# 학생을 한 명씩 반복
print("이름","총점","평균",sep="\t")
for i in students:
print(i.to_string())
------
(result)
이름 총점 평균
윤인성 325 81.25
연하진 275 68.75
구지연 339 84.75
나선주 314 78.5
윤아린 374 93.5
윤인성 332 83.0
|
cs |
예제2
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# 클래스 선언
class Student:
# 클래스 변수
cnt = 0
students = []
# 클래스 함수
@classmethod
def print(cls):
print("-------- 학생 목록 -------")
print("이름\t총점\t평균")
for i in cls.students:
# str(인스턴스) --> __str__이 실행됨
print(str(i))
print("--------------------------")
# 인스턴스 함수
def __init__(self, name, korean, math, english, sience):
# 인스턴스 변수 초기화
self.name = name
self.korean = korean
self.math = math
self.english = english
self.sience = sience
Student.cnt += 1
Student.students.append(self)
def get_sum(self):
return self.korean + self.math +\
self.english + self.sience
def get_average(self):
return self.get_sum() / 4
def __str__(self):
return "{}\t{}\t{}".format(self.name, self.get_sum(), self.get_average())
# 학생 리스트를 선언
Student("윤인성", 99, 89, 78, 59)
Student("연하진", 69, 71, 70, 65)
Student("구지연", 99, 79, 80, 81)
Student("나선주", 79, 83, 72, 80)
Student("윤아린", 90, 86, 98, 100)
Student("윤인성", 93, 80, 79, 80)
# 출력
Student.print()
---------
(result)
-------- 학생 목록 -------
이름 총점 평균
윤인성 325 81.25
연하진 275 68.75
구지연 339 84.75
나선주 314 78.5
윤아린 374 93.5
윤인성 332 83.0
--------------------------
|
cs |
예제3. 상속
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
|
# 부모 클래스 선언
class Parent:
def __init__(self):
self.value = "테스트"
print("Parent 클래스의 __init()__ 메서드가 호출되었습니다")
def test(self):
print("Parent 클래스의 test() 메서드 입니다")
# 자식 클래스 선언
class Child(Parent):
def __init__(self):
Parent.__init__(self)
print("Child 클래스의 __init()__ 메서드가 호출되었습니다")
# 자식클래스의 인스턴스를 생성하고 부모의 메서드 호출
child = Child()
child.test()
print(child.value)
-----------
(result)
Parent 클래스의 __init()__ 메서드가 호출되었습니다
Child 클래스의 __init()__ 메서드가 호출되었습니다
Parent 클래스의 test() 메서드 입니다
테스트
|
cs |
반응형
'Language > Python' 카테고리의 다른 글
Python으로 Slack에 메세지 전송하는 방법(Incoming Webhooks) (0) | 2023.06.13 |
---|---|
Python 강의 정리 8. if __name__ == "__main__": (0) | 2021.05.03 |
Python 강의 정리 7. 튜플, 람다(map(),filter() 예제) (0) | 2021.05.03 |
Python 강의 정리 6. 함수 (0) | 2021.05.03 |
Python 강의 정리 5. 리스트 뒤집기, enumerate() 함수 (0) | 2021.05.02 |