본문 바로가기

파이썬

파이썬 객체와 클래스

1. 객체 지향 프로그래밍

- 객체: 함수와 변수를 하나의 단위로 묶을 수 있는 방법 > 이러한 프로그래밍 방식을 '객체 지향 프로그래밍' 이라 함

- 서로 관련 있는 데이터와 함수를 묶어서 객체로 만들어 생각하는 방법

- 객체들은 다른 객체들과 메시지를 통해 상호 작용 함

 

2. 절차 지향 프로그래밍 ↔ 객체 지향 프로그래밍

 1) 절차 지향 프로그래밍: 프로시저를 기반으로 하는 프로그래밍(함수들의 집합)

                                          ※ 서로 관련된 데이터와 함수를 묶을 수 없는단점이 있음 

 2) 객체 지향 프로그래밍: 데이터와 함수를 하나의 덩어리(객체)로 묶어서 생각하는 방법

                                          ※ 캡슐화: 데이터와 함수를 하나의 덩어리(객체)로 묶는 것

 

3. 객체(ft. 속성, 동작)

 1) 객체 = 데이터 + 함수(알고리즘) = 속성 + 동작

 2) 속성: 객체의 특징 / 바뀔 수 있는 것 / 값이 들어가는 것

 3) 동작: 함수와 같음

 

4. 클래스(ft. 인스턴스)

 1) 클래스: 객체에 대한 설계도 = 특정 종류 객체를 찍어내는

 2) 인스턴스: 클래스로부터 만들어지는 객체를 그 클래스의 인스턴스 라고 함(인스턴스 변수)

     ex) 붕어빵 틀(클래스) → 붕어빵(인스턴스)

     ※ 객체 != 인스턴스

 

5. 공용 인터페이스(ft. 캡슐화)

 1) 공용 인터페이스: 클래스에 의하여 제공되는 메소드

 2) 캡슐화: 공용인터페이스만 제공하고 구현 세부 사항을 감추는 것('정보 은닉'이라는 말에 조금 더 가까움..!)

 3) 캡슐화 하는 이유: 데이터를 보호하기 위함 / 사용자가 내부 메소드가 어떻게 구현되는지 알 필요가 없음

 

6.  self 매개변수

    : 객체 자신을 참조하는 변수 / 어떤 객체가 메소드를 호출했는지를 알아야 하는데, 이 self 매개변수가 이를 알려줌

 

7. 인스턴스 변수, 지역변수, 전역변수

 1) 인스턴스 변수: 클래스 안에 선언된 변수, 앞에 self가 붙음(클래스 내 전체에서 사용 가능)

 2) 지역변수: 함수/메소드 안에서 선언된 변수(선언된 범위 내에서만 사용 가능)

 3) 전역 변수: 함수/메소드 외부에서 선언된 변수

 

※ NOTE

 - self를 붙이지 않고 변수를 생성하면 지역 변수가 됨 !

    ex) def show(self):

               s = "현재 설정값"   # s가 지역변수가 됨

               print(s, self.count) 

           → 변수 s는 앞에 self가 없기 때문에, 인스턴스 변수가 아니다 / 단순히 함수 안에 정의되는 지역변수다.

 (메소드도 마찬가지로, 클래스 안에서 다른 메소드를 호출하려면 앞에 self를 붙여야 함)

 


 

6. 클래스 작성하기

class 클래스이름:     #항상 대문자로 시작
      def __init__(self, ... ):     #생성자 정의
            self.count = 0    #count >> 인스턴스 변수
      def 메소드1(self, ... ):     #메소드 정의
            ....

 1) 클래스 안에는 변수(인스턴스 변수)와 함수(메소드)를 정의 함

 2) 클래스의 멤버: 인스턴스 변수 + 메소드 

 3) 인스턴스 변수: 클래스 안에 정의된 변수

'파이썬' 카테고리의 다른 글

파이썬 자료구조(tuple, set, dictionary)  (0) 2024.05.19
파이썬 리스트(List)  (0) 2024.05.19