본문 바로가기
Python/Python 기초

파이썬 초보자를 위한 클래스와 객체

by 찐남 2022. 7. 4.

파이썬을 처음 시작하고 나서

첫 번째로 마주하게 되는 벽(?)이

클래스(Class)입니다.

 

이번 포스팅에서는 파이썬 초보자를 위해

클래스와 객체에 대한 기본적인 개념과

어떻게 작동하는 지를 배워보도록 하겠습니다.

 

개요

파이썬을 처음 접할 때,

정말 많이 들어 보셨을 문장입니다.

"파이썬은 '객체 지향 프로그래밍 언어'입니다."

 

이 문장의 의미는

거의 모든 파이썬 코드가

클래스라는 특수 구조를 사용하여

구현된다는 것을 의미합니다.

 

프로그래머는 

관련된 모든 것들을 유지하기 위해

클래스를 사용합니다. 

 

이것은 객체 지향 구조의 그룹인 

"class" 키워드를 사용하여 수행됩니다.

 

 

파이썬 클래스와 객체란?

클래스는 객체를 생성하기 위한 

코드 템플릿입니다. 

 

객체에는 멤버 변수가 있고,

이와 관련된 동작이 있습니다.

 

파이썬에서 클래스는

"class" 키워드에 의해 생성됩니다.

 

객체는 클래스의 생성자를 사용하여 

생성됩니다. 

 

생성된 객체를

클래스의 인스턴스라고 합니다.

 

파이썬에서는 다음과 같은 방식으로

인스턴스를 생성합니다.

 

Instance = class(arguments)

 

기본적인 class 구문

학생들의 국어, 영어, 수학 성적을 입력받아

세 과목의 평균을 구하는

class문을 작성해 보겠습니다. 

class mean_score :    # mean_score라는 class 선언
    
    # class에 사용할 변수(language, english, math)를 선언하는 함수
    # class안에 정의되는 함수의 첫번째 인수는 항상 클래스 자신을 나타내는 self 임을 명시하자
    def __init__(self, language, english, math):
        self.language = language
        self.english = english
        self.math = math
   
    # 인스턴스 생성에 활용되는 함수 정의    
    def result(self):
        print("3과목의 평균 점수는 ", round((self.language + self.english + self.math) / 3 , 2), " 입니다.")

 

위의 클래스를 활용해서 

인스턴스를 생성해 보자.

# A_student = mean_score()
# A_student.language = 90
# A_student.english = 80
# A_student.math = 70
A_student = mean_score(90, 80, 70)

# (90 + 80 + 70) / 3 
A_student.result()

 

B_student = mean_score(100, 90, 80)
B_student.result()

 

C_student = mean_score(100, 90, 100)
C_student.result()

 

 

응용

클래스는 인스턴스를 만들어

접근하고 사용할 수 있는

자체 데이터 멤버와 멤버 함수를 보유하는

사용자 정의 데이터 구조를 만듭니다.

 

클래스는 객체의 청사진과 같습니다.

 

파이썬으로 클래스를 작성해야 하는 시기와 중요한 이유

1. 상태를 유지해야 할 때

함께 움직여야 하는 데이터와

동작(= 변수 및 메서드)이 있는 경우 

2. 큰 프로젝트 - 클래스는 코드 구성 및 재사용성을 선호합니다.

계층 구조를 볼 때 클래스를 사용하면

코드 구성이 향상되고,

중복이 줄어들고

코드를 재사용할 수 있습니다.

3. 캡슐화

클래스는 사용자에게

복잡성을 숨길 수 있으므로

코드를 더 쉽게 이해할 수 있습니다.

 

결론

파이썬 클래스는 

새 객체를 생성하기 위한 

개요와 같습니다. 

 

클래스 객체가 인스턴스화 될 때마다 

새 객체가 처음부터 시작됩니다. 

 

클래스 객체는 계속해서 사용할 수 있습니다.

 

클래스는 해당 클래스의 

인스턴스를 만들어 액세스하고 

사용할 수 있는 자체 데이터 멤버와 

멤버 함수를 보유하는 

사용자 정의 데이터 구조를 만듭니다.

 

반응형

댓글