본문 바로가기
컴퓨터/파이썬

[Python] 010. 클래스, 객체, 오브젝트, 인스턴스, 속성, 메서드 정의와 관계 & 사용 방법

by Tommy0927 2023. 7. 30.
반응형

 


1. 클래스, 객체, 오브젝트, 인스턴스, 속성, 메서드, 정의와 관계


앞서 알아본 모듈 안에 들어있는 것이 클래스 입니다.

 

복잡해 보이지만 한 번쯤은 머리속에 정리를 해놔야 하는 부분이 용어에 대한 정리인 것 같습니다. 많이는 들어봤는데, 어디서는 뭐라 부르고 어디서는 다른 용어를 쓰기 때문에 헷갈리기 일수이죠.

 

각 각의 정의와 관계에 대해서 알아보도록 하겠습니다.

 

클래스모듈 안에 존재하면서 편리한 도구를 포함하고 있는 툴입니다.

클래스 안에는 변수와 함수 등등.. 무언가를 만들때 편리하게 가져다가 쓸 수 있는 것들이 많죠

 

클래스 안에 존재하는 함수를 메서드(Method) 라고 합니다.

클래스 틀로 인해 만들어진 것을 객체라고 합니다.

한국어인 객체를 오브젝트(Object), 인스턴스(Instance)라고 부르기도 합니다.

객체, 오브젝트, 인스턴스는 동일한 용어라고 보시면 됩니다.

 

클래스로부터 객체를 만들어 내는 것을 Class Instantiation 이라고 말하며,

 

각 객체는 고유의 데이터를 저장하는 이름 공간을 가지는데, 객체 공간에 있는 변수속성(Property)라고 합니다.

 

 

간단하게 예를 들어보겠습니다.게임을 캐릭터를 만들 때 유용한 클래스가 있다고 생각을 하고,

 

위의 그림처럼, 캐릭터를 제작하는 것을 도와주는 클래스가 있습니다.

실제로 캐릭터별로 다 일일이 제작을 하면 힘들겠죠. 그래서 클래스를 사용합니다.

 

클래스 안에 있는 메서드 들을 각 각 다른 메모리에 할당을 해줍니다.

 

그래서 한 부분은 기사, 한 부분은 마법사, 한 부분은 성직자를 만들기 위해 공간을 마련해 놓습니다.

 

그리고 나서 각각의 객체별로 특징이 다르기 때문에 객체별로 속성을 캐릭터에 맞게 제작을 하면 되겠죠.


2. 사용 방법


자동차틀 클래스 예시1)

 

위의 사진을 자세하게 풀어보도록 하겠습니다.

 

1. '자동차틀' 이라는 클래스 안에는 '부품넣기'라는 메서드가 있습니다. 어떤에 어떤 부품을 넣을지 2개의 인자를 받는 메서드 입니다.

(어떤차, 넣을부품) <- 여기서 어떤차가 첫번째 인자, 넣을부품이 두번째 인자 입니다.

 

2. 자동차1, 자동차2 각각은 자동차 틀 클래스라는 정의를 해줍니다. 그러면 자동차1 과 자동차2라는 객체 2개가 각각 생성되어 메모리에 저장이 되겠죠.

 

3. 자동차틀에 부품넣기라는 메서드를 사용(= 자동차틀.부품넣기)할 건데,

인자1에는 만들어진 객체 자동차1 과 자동차2 중에 어떤 객체를 선택할지 선택해주어야 하는데, 자동차1를 선택,

인자2에는 선택한 객체에 어떤 부품을 넣을지 입력해 주어야 하는 곳에 "와이퍼"를 넣어서 자동차1의 객체안에 그 객체만의 부품을 넣어줍니다.

 

★아래와 같은 방식으로 동일하게 메서드를 호출 할 수도 있고, 보통 이렇게 더 많이 사용됩니다.

 

-> 자동차1.부품넣기("와이퍼")   = 자동차틀.부품넣기(자동차1, "와이퍼")

 

마찬가지로, 자동차2에도 핸들이라는 부품을 넣어줍니다.

 

4. 그리고나서 자동차1안에 부품(= 자동차1.부품)을 출력해보면, 와이퍼가

자동차2안에 부품(=자동차2.부품)을 출력해보면, 핸들이 나오는 것을 볼 수 있습니다.

 

한마디로, 각각의 객체 자동차1, 자동차2를 클래스를 통해 만들어서, 메서드를 이용해 각각의 객체 안에 와이퍼와 핸들이라는 속성을 넣어준 것이라고 보면 됩니다.

 

★ 원래 내장되어 있는 타입, 예를들어 문자열, 인티저, 리스트, 딕셔너리 등등이 원래 내장되어 있는 클래스라고 보시면 됩니다. 그래서,

fruits = [apple, banana, graph] 는 fruits라는 변수에  list 클래스의 객체 생성을 한 것이고,

fruits.append(peach)는 list 클래스의 정의된 append 메서드를 fruits 객체에 대해서 호출한 것입니다.

 

str = "hello" 는 문자열 클래스의 객체이며,

str.upper() 하면, str 객체에 대해서 문자열 클래스의 upper 메서드 호출한 것입니다.

 

 

 

인자가 3개인 계좌 클래스 만드는 예시2)

 

 

1. 계좌라는 클래스 안에는, 개설이라는 메서드출력이라는 메서드가 있습니다.

 

2. 고객1, 고객2라는 객체를 클래스를 이용해 만들어주고

 

3. 계좌라는 클래스 안에 개설이라는 메서드를 이용(계좌.개설)할 건데,

 

인자1 : 객체들 중에 고객1 안에 넣어줄꺼니까 고객1

인자2 : 고객1의 이름은 "김아무개"

인자3 : 고객1의 잔고는 50000원

 

계좌라는 클래스 안에 개설이라는 메서드르 이용(계좌.개설)할 건데, 이번에는

 

인자1 : 객체들 중에 고객2 안에 넣어줄꺼니까 고객2

인자2 : 고객2의 이름은 "강아무개"

인자3 : 고객2의 잔고는 10000원

 

이라고 속성을 각각의 객체안에 클래스의 메서드를 통해서 설정을 해준다.

 

4. 계좌라는 클래스 안에 출력이라는 메서드를 이용할껀데, 고객1과 고객2를 출력하면

이름과 잔고가 출력되는 것을 볼 수 있습니다.

 

반응형

댓글