반응형
Jen'_'
Jen's Space
Email
GitHub
전체 방문자
오늘
어제
  • 분류 전체보기 (98)
    • Ansible (4)
      • 우아한앤서블 (4)
    • Cloud (19)
      • AWS (17)
      • GCP (2)
    • DevOps (40)
      • Docker (6)
      • Kubernetes (26)
      • CICD (6)
      • Terraform (2)
    • Language (13)
      • Python (12)
      • Node.js (1)
    • Linux (10)
    • etc. (7)
    • 개인기록 (1)
    • AEWS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 피드백 환영합니다 :)

인기 글

태그

  • INGRESS
  • vagrant
  • argocd
  • Kubernetes
  • autoscaling
  • k8s
  • 쿠버네티스
  • 자격증
  • 우아하게앤서블
  • gitops
  • karpenter
  • Docker
  • ubuntu
  • jenkins
  • AWS
  • ansible
  • terraform
  • ALB
  • CICD
  • EKS

최근 댓글

Jen'_'

Jen's Space

Python 강의 정리 마지막. 클래스
Language/Python

Python 강의 정리 마지막. 클래스

2021. 5. 3. 11:17
반응형

클래스

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 
Colored by Color Scripter
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
--------------------------
Colored by Color Scripter
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() 메서드 입니다
테스트
Colored by Color Scripter
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
    'Language/Python' 카테고리의 다른 글
    • Python으로 Slack에 메세지 전송하는 방법(Incoming Webhooks)
    • Python 강의 정리 8. if __name__ == "__main__":
    • Python 강의 정리 7. 튜플, 람다(map(),filter() 예제)
    • Python 강의 정리 6. 함수
    Jen'_'
    Jen'_'
    DevOps 엔지니어 Jen의 기술 블로그 / 이메일: jenakim47@gmail.com

    티스토리툴바