본문 바로가기
#03.인프런/+01.파이썬입문

[python] 객체와 클래스

by 돌비오 2023. 3. 24.
728x90
절차지향 프로그래밍

1990년대 이전 언어는 대부분 절차지향 프로그래밍. (대표적인 언어: 파스칼, 코볼, 포트란, C언어 등)

 

ex)

 

냉장고에 코끼리2를 넣는다.

 

 

 

 


 

객체지향 프로그래밍

1. 코끼리라는 사물의 기능, 정보에 대한 설계도를 만든다.
2. 이 설계도를 기반으로 코끼리1 객체를 만듭니다.
3. 냉장고라는 사물의 기능, 정보에 대한 설계도를 만든다.
4. 이 설계도를 기반으로 냉장고1 객체를 만듭니다.
5. 코끼리1 의 객체의 기능을 호출해서, 냉장고1 의 객체의 문을 연다.
6. 코끼리1 의 객체의 기능을 호출해서, 냉장고1 의 객체안으로 들어간다.
7. 냉장고1 의 객체의 기능을 호출해서, 냉장고1 의 객체의 문을 닫는다.

 

 

즉,

 

1. 해당 사물을 나타낼 수 있는 설계도를 만든다. (class)
2. 해당 사물의 설계도를 기반으로 사물1 객체를 만든다. (object)
3. 사물1 객체의 기능을 호출한다.


    * attribute: 사물1 객체의 변수
    * method: 사물1 객체의 함수

 

사물1객체의이름.method이름(인자)

 

 

ex)

string = "Fun Coding"        # 문자열 관련 설계도 있음 - 해당 설계도 기반 문자열1 객체가 만들어짐


분명히 이 문자열 ("Fun Coding") 을 다룰수 있는 설계도가 있을 것이다.
그리고 첫번째 줄 구문 (string = "Fun Coding") 을 실행하면 자동으로 해당 설계도 기반 문자열 객체가 만들어진다.
그리고 .split() 은 해당 문자열 객체가 가지고 있는 메서드 (method) 라는 것이다.


string.split()                       # 해당 문자열1 객체가 가지고 있는 메서드(method)

 

모든 변수 (string) 들이 다 객체이다.

이를 대표할 수 있는 설계도가 있는 것이고,

각각이 이러한 특별한 메서드 (.split ) 를 가질 수 있는 것이다.

 

 

 

 

 

class(설계도), object(객체), attribute(변수), method(함수)

 

class 란?

 

자동차 설계도.

 

속성(attribute) 과 동작(method)을 갖는 데이터 타입.
- 속성(attribute) 은 변수와 유사
- 동작(method) 은 함수와 유사

 

 

 

object 란?

 

자동차.

 

선언된 클래스를 기반으로 만들어진 실체 (객체(object) 또는 인스턴스(instance) 라고 함)
하나의 클래스 설계도를 기반으로 수많은 객체 생성이 가능

 

 

 

객체지향 프로그램 작성 방법

 

1 .클래스 설계 (attribute와 method 구성)
2. 설계한 클래스를 기반으로 클래스를 코드로 작성
3. 클래스를 기반으로 필요한 객체 생성
4. 해당 객체의 attribute와 method를 조작하여 프로그램 수행

 

 

 

 


클래스 만들기

 

class 클래스이름:
    attribute 선언
    method 선언

 

1.1. class 클래스이름 선언

 

1.2. attribute 선언

 

파이썬에서 attribute 는 attribute 값과 함께 선언이 일반적임
    - 예: attribute1 = 0


생성자 메서드 init 의 인자를 활용해서 선언하는 방식이 보다 일반적임
    - 예: init 의 인자 중 하나가 width 일 경우
    - init 메서드 안에서 self.attribute1 = width 로 attribute1 선언

 

 

1.3. method 선언

 

class 안에서 def 메서드(self, ...) 와 같은 방식으로 선언

 

 

 

 

예시)

<< 사각형 만들기 >>

1. 클래스 선언

class Quad:                                                       # class 클래스이름 선언
    height = 0                                                      # attribute 변수
    width = 0
    color = ''
    
    def get_area(self):                                        # method 함수
        return self.height * self.width


이제 Quad 라는 이름의 클래스가 선언이 되었고,
이 클래스를 기반으로 객체를 만들 수 있다.



2. 객체 생성

객체는 각 객체마다 이름이 있을수 있다.


quad1 = Quad()                                                 # quad1 = Quad() 객체가 선언되었다.
quad2 = Quad()



3. 객체 기능 호출

각 객체의 attribute 값을 바꿔줄 수 있다.

quad1.height = 4                                             # quad1 객체의 값 바꾸기
quad1.width = 3
quad1.color = 'red'
quad1.get_area()
=>
12

quad2.height = 5                                            # quad2 객체의 값 바꾸기
quad2.width = 5                                          
quad2.color ='blue'
quad2.get_area()
=>
25

이처럼 객체마다 설계도만 같은거지 실제 내용,값은 바꿀 수 있다.
마치 갤럭시노트 설계도는 모두 같지만 사람마다 어플깔아서 다른 휴대폰(객체)이 되는 것 처럼.


728x90

'#03.인프런 > +01.파이썬입문' 카테고리의 다른 글

[python] 라이브러리  (0) 2023.03.26
[python] 함수  (0) 2023.03.12
[python] 기초 반복문  (0) 2023.03.04
[python] 기초 - 인덱스, 슬라이싱, 함수, 출력, 리스트  (1) 2023.02.27