푸잉이의 기술블로그

[Python] 클래스(Class), 객체(Object), 인스턴스(Instance) 본문

IT/Python

[Python] 클래스(Class), 객체(Object), 인스턴스(Instance)

data고수 2023. 8. 5. 20:48

내가 공부하다 헷갈려서 정리한 요약본 

 

1. 객체 지향 프로그래밍 (Objected Oriented Programing)

  • 모든 개념을 객체(Object, 사물)로 보고 객체 중심으로 프로그램을 진행하는 기법
  • ex) 스마트폰, 에어컨, 세탁기 등 독립된 객체들이 가진 고유의 기능으로 서로 상호 작용하여 독립된 단위로 구분하고 파악할 수 있도록 하는 것.
  • 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법
  • ex) 스마트폰, 에어컨, 세탁기 각 기능들을 가진 객체를 만들고, 서로 유기적인 상호작용을 통해 편안한 집을 만드는 것 

1) 장점

  • 코드 재사용 용이 

             -> 남이 만든 클래스를 가져와서 이용할 수 있음, 상속을 통해 확장해서 사용 가능

  • 유지보수 쉬움

            -> 객체 지향 프로그래밍은 수정해야할 부분이 클래스 내부에 멤버 변수 혹은 메서드로 존재하기 때문에 해당 부분만 수정하면 됨. 

cf) 절차 지향 프로그래밍은 코드를 수정할 때 일일이 찾아 수정해야 함 

  • 대형프로젝트에 적합 

            -> 클래스 단위로 모듈화시켜 개발할 수 있어 여러 회사에서 프로젝트를 개발할 때 업무 분담하기 쉬움

2) 단점

  • 처리 속도가 상대적으로 느림
  • 객체가 많으면 용량 커질 수 있음
  • 설계시 많은 시간과 노력이 필요함

 

2. 객체 (Object)

  • 객체는 속성 및 동작을 가짐 
  • ex) 포켓몬이라는 객체 or 인스턴스 -> 이름, 나이, 몸무게 등 속성, 변수
  • ex) 몸통박치기, 앞구르기,뒷구르기 등 -> 메소드 (Method)
즉, 객체 혹은 인스턴스는 "변수와 메소드"로 구성되어 있음.

 

1) 객체와 인스턴스의 차이 

  • 인스턴스: 클래스로 만든 객체
  • 클래스 이름 뒤에 ()를 넣으면 만듦. 
  • 그 객체가 어떤 클래스의 객체인지 설명할 때 사용.

 

3. 클래스 (Class)

1) 클래스란?

  • 변수와 함수를 묶어서 하나의 새로운 객체로 만드는 것
  • 특정한 종류의 객체들을 찍어내는 template
  • 복잡한 코드를 쉽게 호출하고 사용할 수 있게 한다. 
  • 어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성과 행위를 변수와 메서드로 정의한 것
  • ex) 빨래만 해주는 세탁기를 만드는 것
  • 객체를 만들기 위한 메타정보

 

클래스란, 어떤 물건을 만들기 위한 틀이고, 똑같은 물건 (인스턴스)를 만들 수 있다. 

 

2) 조건

  • 형식: Class 클래스 이름:
  • 클래스 이름은 반드시 첫 글자는 대문자로 입력 
  • 클래스 구성 

         1. 속성 (Attribute)

              - 객체가 가지는 여러 가지 데이터를 보관 

              - 멤버 변수

         2. 매서드 (Method)

             - 객체와 관련된 동작을 하는 내부 함수 

             - 멤버 함수

 

3) 생성자 (Constructor)

  • __init__(): 메소드는 클래스에서 가장 먼저 시작시키는 메소드 
  • 특별한 메서드로 클래스로 객체를 생성할 때 한 번 실행됨. 
  • 생성자를 사용하면 객체가 생성될 때 객체의 속성을 생성 및 초기화할 수 있음.
  • 클래스 내에서 특별한 이름(__init__)을 가지면 객체가 생성될 때 자동으로 호출되는 함수가 있는 것을 생성자라 함. 
class A:
  def __init__(self):
    print('apple')
    a= 0
p = A()  출력값 => apple
  • __init__ 이 자동으로 호출 // init 이 초기화하다라는 뜻인 initialize 약어
  • `__`로 시작하는 함수는 모두 특별한 메서드
  • member1= A().a -> 생성된 인스턴스에 점을 찍어서 인스턴스 변수나 메서드에 접근할 수 있음

4) Self

  • 객체의 인스턴스 그 자체를 말함
  • 객체 자기 자신을 참조하는 매개변수 
  • self를 사용함으로 클래스 내에 정의한 멤버에 접근할 수 있음. 
  • class 에서 인스턴스를 지칭할 방법이 없으니깐 self를 이용하여 클래스의 메소드와 속성에 접근
class Cat:
  def __init__(self, name, color): #self는 class 안에서 만들어진 인스턴스를 지칭
    self.name = name
    self.color= color

  def info(self):
    print('고양이 이름은', self.name, '색깔은', self.color)

cat1= Cat('네로','검정') #cat1 인스턴스 생성
cat2= Cat('네비','파랑') #cat2 인스턴스 생성

cat1.info()
cat2.info()

 

https://wikidocs.net/70862

https://jeong-pro.tistory.com/95

 

객체 지향 프로그래밍이 뭔가요? (꼬리에 꼬리를 무는 질문 1순위, 그놈의 OOP)

객체 지향 프로그래밍(Object Oriented Programming) 여러 소프트웨어 관련 IT기업 신입사원 기술면접에서 면접자들 긴장을 풀어줄 겸 워밍업으로 자주 나오는 질문이다. "객체 지향 프로그래밍에 대해

jeong-pro.tistory.com

https://www.youtube.com/watch?v=QCNkJ3SaZhk

'IT > Python' 카테고리의 다른 글

평가 지표  (0) 2023.08.25
선형 회귀/회귀/분류 개념  (0) 2022.12.30
[알고리즘 스터디] 스택 (Stack) 큐 (Queue)  (0) 2022.12.07
[알고리즘 스터디] 해쉬 (Hash)  (0) 2022.11.28
알고리즘의 시간 복잡도, Big-O  (0) 2022.11.25
Comments