[Python] 0. Class 개념정리
들어가에 앞서,
Object = data + method 라는 것을 항상 명심할 것.
0. Class의 출발점 : OOP (Object_Oriented_ Programming : 객체지향 프로그래밍)
먼저 정의부터 말하자면,
OOP란, 객체 지향 프로그래밍의 줄임말로 "DATA 를 추상화시켜 Atrribute와 Method를 가진,
Object를 만들고, 그 Object간의 유기적인 상호작용 통해 Logic을 구조화(구성)하는 작업이다.
이를 알기쉽게 설명하면,
프로그래밍에서 사용하는 많은 개념들은 사실 우리가 존재하는 현실세계로 부터 가져온 경우가 많고, OOP 또한 그렇습니다.
(ex DATAFrame = 어떤 정보나 사물을 알기 쉽게 보기 위해 표를 만들어 정리한 것, stack = 쌓여있는 물건을 빼낼때 우리가
맨 위부터, 뺴는방법)
이런것 처럼, OOP 역시 우리가 사는 세계로 설명을 할수있습니다.
예를 들어,
우리기 사는 세계를 단순하게 보면, 생명체와 사물(비생명체) 두 가지 기준으로 구별할수있습니다.
이런 각각의 생명체와 사물(Object) 들을 우리가 구분하는 방법은
먼저, 실제로 존재하는 사물이나 생명체(= Object)에 각각의 기능이나 특징들(Attribute)을 통해,
다른 Object들과 구별하고, 또 같은 성질인 Objecte를 모아서 구분(Class)하여서, 새로운 사물이나 물체를 만들거나 보았을 떄(instance), 그것이 무엇인지 인지하거나, 사용하면서 세상을 살아갑니다.
이런 것처럼, 프로그래밍 에서는, 프로그래밍 세계에서 실제 존재하는 객체인 DATA들을, 구분하거나 사용하기 위해서
구별기준(혹은 동적이나 기능적 필요를 위해)인 Class를 만들고,
그 안에 def 를 사용하여, method(기능)을 부여하고, 필요해 따라 기능을 자유롭게 추가하고, 변경하여 사용하기 위해,
OOP를 사용합니다.
(설명이 부족하다.... 강사님의 수업을 들으면서 계속해서 정리해 나갈것)
1. Class 란 ? (_ by python 개발문서 )
1- 0.정의
in python_documnetation :
Class(클래스)는 DATA 와 method(기능)을 함께 묶는 방법을 제공합니다.
새 클래스를 만드는 것은 object(객체)의 새 형 을 만들어서, 그 형의 새 인스턴스 를 만들 수 있도록 합니다.
각 클래스 인스턴스는 상태를 유지하기 위해 그 자신에게 첨부된 attribute(어트리뷰트,속성)를 가질 수 있습니다.
클래스 instance(class로 부터 만들어진 인스턴스,)는 상태를 바꾸기 위한 - 클래스에 의해 정의된- 메서드도 가질 수 있습니다.
( ex : ‘김연아’, ‘김동성’ 의 공통점은? -> 김연아, 김동성은 실제로 존재한다! => 따라서 이들을 실체(instance)이다.
둘다 스케이터! (스케이터라는 클래스)=> ‘부류’라는 의미로 생각, 다른 예로는 ‘사과’는 클래스 이고, ‘내가 어제 저녁에 먹은 사과 다섯 개 중에 두번쨰 것’ => 이렇게 꼭 찍어서 말하면 실체 (instance)이다.)
앞선 과정들에서 설명한 것처럼, 클래스는 추상화된 개념이고 실체는 아직없다.
실제 코딩을 하면서 이런 클래스를 어떻게 만들고, 이 클래스를 통해 어떻게, instance 와 object를 만드는지, 설명하겠습니다.
1-1 . 코딩으로 Class 구현하기
클래스를 만들어 줄 떄는, 위와 같이 Class 클래스이름: 형식 으로 시작해서 그 다음부터 그 클래스의 성질이나 행동을 정의해주면 된다.
둘쨰 줄에서 클래스 내부에 정의 된 함수를 메서드(Method)라고 부른다.
이 코드에서 sing method(함수)는 singer 라는 클래스가 하는 행동을 정의하고 있다!
Singer 클래스를 만든 다음 taeji라는 객체를 만들어서 사용한다. Singer클래스를 만든 다음에 taeji라는 객체 만들어서
인스턴스명 = 클래스()와 같이 만들 된다!
여기서 taeji는 두가지의 의미로 알수 있다.
1. taeji는 생성된 객체이다.
2. taeji는 Class로부터 생성된 instance(실체)이다.
그 다음엔 그렇게 만들어진 taeji에게 노래를 시켜봤습니다(class에서 정의된 method인 sing을 사용).
Singer 클래스에 sing 메서드를 정의해줬기 때문에 Singer 클래스에 속한 taeji 객체도 sing 메서드를 사용할 수 있다.
다시 말해서 가수는 노래할 수 있으니까 태지라는 가수도 역시 노래를 할 수 있는 것입니다.
이와 같이 어떤 객체의 메서드를 사용할 때는 객체.메서드 형식으로 해주시면 됩니다.
인스턴스와 객체
https://kingnamji.tistory.com/6
[파이썬] 클래스와 객체, 인스턴스를 이해해보자 (예시를 통한 설명)
파이썬의 클래스(class)와 객체(object), 인스턴스(instance)에 대해 정리해보겠습니다. 클래스(class), 객체(object), 인스턴스(instance)를 구분해보자. 클래스(class)는 주로 어떤 틀에 비유됩니다. 즉, 똑같
kingnamji.tistory.com
class car:
def on(self):
print("차량의 시동을 켭니다.")
ray = car()
ray.on()
[출력 결과]
차량의 시동을 켭니다.
그럼 위의 코드를 보고 한번 표현을 해볼까요?
1. ray는 객체(object) 입니다. ( ray는 객체(obejct) ! )
2. ray 객체(object)는 car 클래스(class)의 인스턴스(instance) 입니다. ( ray는 car의 인스턴스(instance) ! )
인스턴스(instance)라는 표현은 특정 객체가 어떤 클래스의 객체인지 관계를 중점으로 표현할 때 사용합니다.
이제 위의 1. 과 2. 의 표현의 차이를 한번 생각해 보시길 바랍니다.