본문 바로가기
개발/파이썬

23.03.09 파이썬의 객체지향과 클래스

by 상달군 2023. 3. 9.
728x90

목차

1. 파이썬의 객체지향 프로그래밍

  • 객체지향 프로그래밍
    • 객체(object)란?
    • 클래스(class)란?
    • 클래스와 객체
  • 클래스(class)만들기
  • 생성자(Constructor) 
  • 메소드 정의
    • 메소드 정의
    • 메소드 타입

16.객체지향과 클래스.ipynb

1.객체지향 프로그래밍

  • 문제를 여러개의 객체 단위로 나눠 작업하는 방식
  • 객체 단위로 개발하기 때문에 코드를 편하게 합칠 수 있다.
  • 단점 : 설계자체가 굉장히 잘 해야한다. -여러사람이 한 파트씩 하기 때문에

// c언어는 과거에 절차지향 프로그래밍이였다. 절차 지향 프로그램이란 ? 물흐르듯이 아래로 진행

// 굉장히 많은 지향 프로그래밍들이 있고, 어떻게 프로그램을 하느냐에 따라 지향이 바뀔수 있다.

 

1-1.객체(Object)란?

  • 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자산의 속성을 가지고 있고 다른 것과 식별 가능한 것을 말함.

// 예) 현실세계 : 어떤 단어 하나를 생각 했을때, 모양은 다 다를수 있지만 모든사람들이 생각하는건 비슷하다.


1-2.클래스(class)란?

  • 객체를 생성하기 위한 일종의 설계도와 같다.
  • 클래스는 프러퍼티(필드), 메소드(함수)로 구성되어 있다.
    • 프러퍼티(Property): 데이터가 저장되는 곳 (쉽게말하면, 변수)
    • 메소드(method) : 객체의 동작에 해당하는 실행 블록 (쉽게말하자면, 함수)
 

 

1-3.클래스와 객체

  • 건축 설계도가 클래스라면, 실제로 지어진 집은 객체
  • 객체는 클래스로 생성되어 나타나고 구체화된 인스턴스(복제)
  • 실제로 클래스가 인스턴스 되어 메모리에 상주하는 형태를 객체라고 부른다.
  • 파이썬의 모든 변수와 함수는 객체로 저장 되어 있다.

2.클래스 만들기

*

class 클래스명:
      프러퍼티명1 = 값1
      프로퍼티명2 = 값2
      ....

      def 메소드명1(self, 변수1, 변수2,....): #매개변수가 없을땐 self만 쓰기
          메소드가 호출되면 실행할 문장
          ....
      def 메소드명2(self, 변수1, 변수2,....): #매개변수가 있으면 맨앞에 self
          메소드가 호출되면 실행할 문장
          ....
  • 클래스를 통해 호출되는 변수를 프로퍼티(필드)라고 부름
  • 클래스를 통해 호출되는 함수를 메소드라고 부름
  • self = 클래스의 각 호출한 객체를 가르킴 // 사실 아무이름이나 적어줘도 되지만 관례적으로 'self'라고 통째로 써준다
    • self는 그냥 변수 이름이고 self안에는 메모리 주소값이 저장된다.
    • 클래스 안에 함수를 만들때는 꼭 self를 넣어주어야 한다. 단, self는 변수이름일뿐 
  • 클래스 만들기

  • 클래스의 기본적인 형태

  • 클래스의 사용법

3.생성자(Constructor)

  • 클래스를 객체화 시킬때 가장 먼저 자동으로 실행되는 메소드
  • __ init __(self) 스페셜 메소드 모양은 이렇게 생겼다.
  • 생성자에서는 해당 클래스가 다루는 데이터를 정의하고 초기화 함
  •  

 

  • self의 기능 

클래스를 먼저 생성해줍니다.
각 객체를 확인 해줍니다.
입력 값을 전달 해줍니다.
결과값 확인 !!

 

  • self의 기능 2

 

  • 생성자 '__init__'을 이용하여 한번에 넣을수도 있습니다. 
    • 계속 바뀌거나 객체마다 바꿔자야 하는 값들은 생성자를 이용하여 틀을 정해놓을 수 있습니다.

  • 위에 생성된 생성자를 이용하여 객체를 생성하고자 할때 값을 입력 
    • nickname은 디폴트 값을 줬기 때문에 넣지 않으면 디폴트값이 출력된다. 
    • self, 이후로 변수값 name과 age를 입력받아 잘 출력 되는 것을 밑에 그림을 통해 확인할 수 있습니다.

 

4.메소드 정의

  • 클래스 안에 있는 함수를 메소드라고 한다.
  • 해당 클래스의 객체에서만 호출 가능한 함수
  • 해당 객체의 속성에 대한 연산을 행함.
  • '객체이름.메소드명()' 형태로 호출됨

4-1.메소드 정의

  • 모든 객체지향 언어적 요소를 활용하여 객체에 대한 구체적인 정보를 노출시키지 않도록 하는 기법(은익성)
  • 은익성
    • 개발할때, 구체적인 정보를 노출 시키는것은 좋지 않다.
    • 변수의 값을 불러오기 위해 변수전체를 입력하는것은 옳지 않다.
  • 예시)

  • HanBank라는 객체에서도 사용하기 위해 새로운 객체를 생성 하여 테스트

4.2메소드 타입

  • 메소드 타입 2가지
    • instance method : 객체 형태로 호출되기 때문에 해당 메소드를 호출한 객체에만 사용한다.
    • class method : 클래스이름으로 호출하는 메소드(메소드 선언 위에 @staticmethod
      • 객체 없이 사용 가능해진다.
      • @staticmethod 생략가능 
      • 'self'작성 되어 있지 않으면 자동으로 스택틱메소드(@staticmethod)가 있다고 생각 하고 프로그램 실행

728x90

댓글