17-1. 들어가며


  • 학습 목표
    • 클래스 용어에 대한 이해 및 설명
    • 클래스를 만들고 사용하기


17-2. 클래스와 객체


클래스와 객체의 관계

  • 클래스(Class) : 설계도, 무엇을 계속 만들어 내는 틀
    (∵ 클래스는 객체 정의 및 생성을 위한 변수와 메서드 집합임)
    ex) 신발 설계도, 붕어빵 틀
  • 객체(Object) : 속성값과 행동을 가지고 있는 데이터
    ex) 신발 설계도로 만든 다양한 신발(색깔, 사이즈 등을 속성값이라고 생각하면 됨), 붕어빵 틀을 이용해 만든 실제 구워진 붕어빵


17-3. 클래스 만들기


클래스 용어

용어설명
클래스(Class)제품 설계도
객체(Object)설계도로 만든 제품
속성(Attribute)클래스 안 변수
메서드(Method)클래스 안 함수
생성자(Constructor)객체를 만들 때 실행되는 함수
인스턴스(Instance)메모리에 살아있는 객체

  • 함수가 메서드보다 포괄적인 개념(메서드는 특정 함수를 가르키는 용어)

🚨주의🚨 : 클래스에서의 생성자와 제너레이터(Generator)

  • 생성자(Constructor) : 객체 생성 시 실행되는 함수
  • 생성자(Generator) : 반복자(Iterator) 생성 함수, "yield 키워드 사용"

  • 인스턴스(instance)
    • 메모리에서 삭제되지 않고 살아있는 객체
    • 객체 안에 인스턴스가 포함되어 있기 때문에 객체로 생각해도 무방

      참고: 객체와 인스턴스의 차이를 면밀하게 보면..

      • 객체 : 선언 형태 그대로 생성, 모든 인스턴스 포함, 클래스 타입으로 선언되면 객체
      • 인스턴스 : 클래스로 구현된 구체적 실체, 객체 실체화한 것이 인스턴스, 객체가 메모리에 할당되어서 실제 사용되면 인스턴스!

클래스 만들기

클래스, 메서드, 객체

class 클래스이름:
	def 메서드이름(self):
    	명령블록


# 첫 클래스 만들기
class Aiffel: # 클래스 이름은 대문자로 시작!
	def cheer(self):
    	print('끝까지 화이팅!')


# 클래스 출력은 객체를 만들고 그 객체에 메서드를 붙여야 한다!
객체 = 클래스 이름()
객체.메서드() # '객체의 메서드'로 해석하기

python = Aiffel()
python.cheer()

  • 클래스 이름은 대부분 대문자로 시작
    ex) AiffelGood와 같은 캐멀 케이스 사용(이렇게 안해도 오류는 안나지만 개발자 간의 약속!)
  • 매개변수는 반드시 self를 넣어줘야 한다!

생성자, 속성

  • 생성자 메서드 : __init__

    • python = Aiffel()처럼 객체를 만들 때 호출되는 메서드
    • 객체 초기화
  • 앞의 __

    • 스페셜 메서드(special method) 또는 매직 메서드(magic method)
    • 파이썬 자동 호출 메서드
  • self.속성

    • 생성자 매개변수는 자기 자신(self)와 속성값(name)이 들어감.
    • 생성자 메서드에서 받은 인자라는 뜻의 self.name = name!

  • 코드로 이해하기
    • 속성값 : name
    • 속성 자체 : 속성값을 받는 것
    • 관용적으로는...
      • 속성값을 받는 매개변수속성 자체를 받는 속성 이름을 동일하게 작성!
    • 즉, 다르게 작성해도 문제되지 않는다는 것
      ex) self.name -> self.new

  • 실습하기
    • 객체를 만들 때, 각자의 이름을 빨간 name에 전달해보자.

  • 코드 작동 순서 살펴보기
  1. 객체를 만들기 위해 클래스 할당 -> 자동으로 생성자 메서드 호출
    a. 생성자 메서드가 돌면서 속성값 '김인유'
    b. 생성자 메서드의 2번째 매개변수인 name에 입력되어
    c. 속성 self.name을 생성!

  2. cheer 메서드를 호출하는 python.cheer() 실행 -> cheer 메서드에 python이 자동으로 삽입되어서 -> self.new 속성을 쓸 수 있음.

  • 좋아하는 영화의 주인공 이름 입력하기

self

  • 객체 자신을 가리킴.

  • 클래스 동작 순서
  1. Aiffel() 클래스에 김인유를 넣은 객체인 python 생성

  1. __init__ 호출
    a. 자동으로 __init__ 생성자가 호출되어
    b. 매개변수 selfpython 객체 입력되고
    c. 매개변수 name김인유 입력된다!

  1. self.namepython.name으로 완성되어 python에 할당

  1. python 객체의 cheer 메서드 호출

  1. python 객체가 자동으로 매개변수 self에 들어온다!
    a. cheer 메서드에서 print(f"{self.new}, 끝까지 화이팅!") 출력!

  1. cheer 메서드 결과값 출력!
profile
언젠가 내 코드로 세상에 기여할 수 있도록, BE&Data Science 개발 기록 노트☘️

0개의 댓글