아래의 내용은 'Do it! 점프 투 파이썬' 책을 공부하며 정리하였습니다.
https://www.aladin.co.kr/shop/wproduct.aspx?ISBN=K362833219&start=pnaver_02
Do it! 점프 투 파이썬
챗GPT를 시작으로 펼쳐진 생성 AI 시대에 맞춰 설명과 예제를 다듬고, 최신 경향과 심화 내용을 보충했다. 또한 이번 개정 2판도 50만 코딩 유튜버인 조코딩과 협업을 통해 유튜브 동영상을 제공해
www.aladin.co.kr
오늘은 파이썬의 핵심인 "클래스" 입니다!
클래스와 객체
클래스(class) : 똑같은 무언가를 계속 만들어 낼 수 있는 설계 도면
객체(object) : 클래스로 만든 피조물
class Cookie: <- 클래스
pass * 아무것도 수행하지 않는 문법 / 임시로 코드를 작성할 때 주로 사용합니다.
a = Cookie() <- 객체
b = Cookie() <- 객체
클래스로 만든 객체에는 중요한 특징이 있습니다. 바로 객체마다 고유한 성격을 가진다는 것입니다. 따라서, 동일한 클래스로 만든 객체들은 서로 전혀 영향을 주지 않습니다.
* 객체와 인스턴스의 차이
클래스로 만든 객체를 '인스턴스'라고도 합니다. 보통 클래스와 객체를 관계 위주로 설명할 땐,
예로 a = Cookie()가 있을 때, "a는 객체", "a는 Cookie의 인스턴스"라는 표현을 사용합니다.
메서드
메서드(method)는 클래스 안에 구현된 함수를 의미합니다. 메서드는 클래스에 포함되어 있다는 점만 제외하면 일반 함수와 다를 것이 없습니다.
* 일반함수
def 함수_이름(매개변수):
수행할_문장
* 메서드
def 함수_이름(self, 매개변수):
수행할_문장
** 메서드 예시
Class FourCal():
def setdata(self, first, second):
self.first = first
self.second = second
a = FourCal()
a.setdata(4, 2)
단, 메서드의 첫 번째 매개변수에 "self"가 있습니다. self에는 "setdata" 메서드를 호출한 객체 "a"가 자동으로 전달됩니다. 파이썬 메서드의 첫 번째 매개변수 이름은 관례적으로 "self"를 사용합니다. 물론 "self" 말고 다른 이름을 사용해도 상관없습니다.
* 메서드를 호출하는 또 다른 방법 (잘 사용하지는 않는 방법입니다.)
a = FourCal()
FourCal.setdata(a, 4, 2)
* 클래스로 만든 객체의 객체변수는 다른 객체의 객체변수에 상관없이 독립적인 값을 유지합니다. 즉, a 객체의 객체변수 값을 를 변경해도 b 객체의 객체변수 값에 영향을 주지 않습니다. (변하지 않습니다!)
a = FourCal()
b = FourCal()
a.setdata(4, 2)
a.first <- 4
b.setdata(3, 7)
b.first <- 3
a.fitst <- 4
생성자
초깃값을 설정해야 할 필요가 있을 때는 "setdata"와 같은 메서드를 호출하여 초깃값을 설정하기 보다는 생성자를 구현하는 것이 안전한 방법입니다.
생성자(constructor)란 객체가 생성될 때 자동으로 호출되는 메서드를 의미합니다. 파이썬 메서드명으로 "__init__"을 사용하면 이 메서드는 생성자가 됩니다.
클래스의 상속
상속(inheritance)이란 어떤 클래스를 만들 때 다른 클래스의 기능을 물려받을 수 있게 만드는 것입니다. 클래스를 상속하기 위해서는 다음처럼 클래스 이름 뒤 괄호 안에 상속할 클래스 이름을 넣어 주면 됩니다.
class 클래스_이름(상속할_클래스_이름)
보통 상속은 기존 클래스를 변경하지 않고 기능을 추가하거나 기존 기능을 변경하려고 할 때 사용합니다. 기존 클래스가 라이브러리 형태로 제공되거나 수정이 허용되지 않는 상황에서 사용됩니다.
메서드 오버라이딩
부모 클래스(상속한 클래스)에 있는 메서드를 동일한 이름으로 다시 만드는 것을 메서드 오버라이딩(method overriding)이라고 합니다. 이렇게 메서드를 오버라이딩하면 부모 클래스의 메서드 대신 오버라이딩한 메서드가 호출됩니다.
클래스변수
클래스변수는 "클래스이름_클래스변수"로 사용할 수 있습니다. 클래스변수는 객체변수와 달리 클래스로 만든 모든 객체에 공유된다는 특징이 있습니다. 즉, 클래스변수의 값이 변경되면 생성한 객체 변수의 값 또한 동일하게 변경됩니다.
* 객체변수는 클래스변수와 동일한 이름으로 생성할 수 있습니다. 이때, 두 변수는 서로 영향을 주지 않습니다.
코드 실습
* a^b는 a ** b 로 표현합니다!
오늘은 여기까지 클래스에 대해서 정리해보았습니다!
오늘의 공부 끝~
'Programming Language > Python' 카테고리의 다른 글
[Do it! 점프 투 파이썬 16일차] 5장_파이썬 날개 달기 (예외처리) (1) | 2024.04.13 |
---|---|
[Do it! 점프 투 파이썬 15일차] 5장_파이썬 날개 달기 (모듈, 패키지) (0) | 2024.04.12 |
[Do it! 점프 투 파이썬 13일차] 4장_파이썬의 입출력 (되새김문제) (1) | 2024.04.09 |
[Do it! 점프 투 파이썬 11-12일차] 4장_파이썬의 입출력 (사용자 입출력, 파일 읽고 쓰기, 프로그램의 입출력) (0) | 2024.04.09 |
[Do it! 점프 투 파이썬 10일차] 4장_파이썬의 입출력 (함수) (1) | 2024.04.04 |
댓글