Do it! 첫 코딩 - 4장

2025. 2. 14. 21:25·리뷰/책

클래스와 객체지향 프로그래밍

  1. 클래스(Class)

    • 클래스는 객체를 정의하는 설계도와 같은 역할을 함.
    • '객체지향형 프로그래밍(OOP)'은 클래스를 사용해 코딩하는 방식.
    • 비유: 도장은 클래스에 해당하며, 다양한 도장을 찍을 수 있는 설계도와 같음.
  2. 인스턴스(Instance)

    • 클래스를 기반으로 만들어진 실제 객체.

    • 비유: 도장이 클래스라면, 종이에 찍힌 도장 자국이 인스턴스. 도장은 동일해도 찍힌 날짜나 위치가 다를 수 있음.

    • 코드 예시:

        참03호 = 참치선물세트()  # 클래스 참치선물세트를 기반으로 인스턴스 참03호 생성
        참03호.일반 = 12
        참03호.야채 = 3
        참03호.고추 = 3
      
  3. 클래스와 인스턴스 선언 순서

    • 항상 클래스를 먼저 정의한 후, 인스턴스를 생성해야 함.
  4. 오브젝트(Object)와 인스턴스의 차이

    • 대부분의 경우 동일하게 사용.
    • 단, 하나의 오브젝트에 여러 이름이 붙을 경우, 인스턴스와 오브젝트는 구분될 수 있음.
  5. 클래스에 메서드 추가하기

    • 클래스 내에서 정의된 함수는 메서드(Method)라고 부름.

    • self 키워드: 클래스 자신을 참조하기 위한 예약어로, 클래스 내 변수에 접근할 때 사용.

    • 메서드 선언 및 사용:

        class 참치선물세트():
            일반 = 0
            야채 = 0
            고추 = 0
      
            def 출력(self, 이름):
                print('**', 이름, '**')
                print('일반참치', self.일반)
                print('야채참치', self.야채)
                print('고추참치', self.고추)
      
            def 출력2(self):
                self.출력('참치선물세트')
      
        참01호 = 참치선물세트()
        참01호.일반 = 12
        참01호.야채 = 3
        참01호.고추 = 3
        참01호.출력2()  # 결과: '참치선물세트'와 함께 참치 종류 출력
      
  6. 핵심 포인트

    • 클래스는 설계도, 인스턴스는 설계도를 기반으로 만들어진 객체.
    • 도장 비유: 도장이 클래스라면, 종이에 찍힌 도장 자국이 인스턴스.
    • self는 클래스 내에서 선언된 변수/메서드를 참조할 때 사용.
    • 클래스는 먼저 정의하고, 인스턴스를 생성해야 함.
    • 클래스 내부 메서드는 객체의 행동(기능)을 정의함.

04-5 인스턴스 초기화와 생성자

  1. 생성자 __init__()

    • 인스턴스를 생성할 때 초기 값을 설정하는 역할을 함.

    • 변수 초기화를 생성자에서 수행.

    • 코드 예시:

        class 참치선물세트():
            def __init__(self, 일반, 야채, 고추):
                self.일반 = 일반
                self.야채 = 야채
                self.고추 = 고추
      
            def 출력(self):
                print('일반참치:', self.일반)
                print('야채참치:', self.야채)
                print('고추참치:', self.고추)
      
        # 인스턴스 생성 및 초기화
        참01호 = 참치선물세트(12, 3, 3)
        참01호.출력()
      
  2. 언더바 두 개 (__)의 의미

    • 파이썬에서 미리 정해진 특별한 메서드나 변수를 나타냄.
    • 예시: __init__(), __str__(), __len__().
  3. 파이썬에서 변수 선언

    • 파이썬은 변수를 미리 선언하지 않고 생성자에서 정의하는 방식을 선호.
    • 이는 파이썬의 immutable 특성 때문으로, 생성자에서 변수를 초기화하면 관련된 특이 현상을 피할 수 있음.
  4. 클래스 이름과 인스턴스 이름 구분

    • 클래스 이름: 보통 첫 글자를 영어 대문자로 작성.

    • 인스턴스 이름: 첫 글자를 영어 소문자로 작성.

    • 예시:

        class TunaGiftSet:  # 클래스 이름
            pass
      
        tuna01 = TunaGiftSet()  # 인스턴스 이름
      
  5. 핵심 포인트

    • 생성자 __init__()는 인스턴스 생성 시 값을 초기화함.
    • 파이썬에서는 변수 선언 없이 생성자에서 변수 정의를 선호.
    • 클래스 이름은 대문자로 시작, 인스턴스 이름은 소문자로 시작하여 구분.

04-5 클래스 확장과 상속

  1. 클래스 확장: 상속(Inheritance)

    • 상속이란?
      한 클래스(슈퍼클래스)의 속성과 메서드를 다른 클래스(서브클래스)가 물려받는 것.

    • 클래스 용어:

      • 슈퍼클래스(Superclass): 상속을 해주는 상위 클래스. #참치선물세트
      • 서브클래스(Subclass): 상속을 받는 하위 클래스. #특별세트
      • 비유: 부모 클래스(슈퍼클래스)에서 자식 클래스(서브클래스)로 유산을 물려주는 관계.
    • 코드 예시:

        class 참치선물세트():  # 슈퍼클래스
            def __init__(self, 일반, 야채, 고추):
                self.일반 = 일반
                self.야채 = 야채
                self.고추 = 고추
      
            def 출력(self, 이름):
                print('**', 이름, '**')
                print('일반참치', self.일반)
                print('야채참치', self.야채)
                print('고추참치', self.고추)
      
        class 특별세트(참치선물세트):  # 서브클래스 안에 있는게 슈퍼클래스
            def __init__(self, 일반, 햄, 카놀라유):
                super().__init__(일반, 0, 0)  # 슈퍼클래스의 생성자 호출
                self.햄 = 햄
                self.카놀라유 = 카놀라유
      
  2. 오버라이드(Override)

    • 오버라이드란?
      서브클래스에서 슈퍼클래스와 같은 이름의 메서드를 다시 정의하는 것.

    • 슈퍼클래스의 메서드 기능을 서브클래스에 맞게 변경 가능.

    • 코드 예시:

        class 특별세트(참치선물세트):  # 서브클래스
            def 출력(self, 이름):  # 오버라이드된 출력 메서드
                super().출력(이름)  # 슈퍼클래스의 출력 메서드 호출
                print('햄', self.햄)
                print('카놀라유', self.카놀라유)
  3. 실행 예시:

     특01호 = 특별세트(6, 3, 2)
     특01호.출력('특별세트 01호')

    결과:

     ** 특별세트 01호 **
     일반참치 6
     야채참치 0
     고추참치 0
     햄 3
     카놀라유 2
    
  4. 핵심 포인트

    • 상속(Inheritance): 서브클래스가 슈퍼클래스의 속성과 메서드를 물려받음.
    • super() 사용: 슈퍼클래스의 생성자와 메서드를 호출할 때 사용.
    • 오버라이드(Override): 서브클래스에서 슈퍼클래스의 메서드를 재정의.
    • 서브클래스는 슈퍼클래스의 기본 기능을 확장하거나 변경 가능.

04-6 모듈과 패키지

  1. 모듈(Module)

    • 모듈이란?
      코드(클래스, 함수, 변수 등)를 별도의 파일로 저장하여 필요할 때마다 가져와 사용하는 것.
    • 사용 이유:
      • 코드 재사용성을 높임.
      • 프로그램 구조를 더 깔끔하고 관리하기 쉽게 만듦.
  2. 모듈에서 가져오기 (Import)

    • 특정 클래스, 함수, 변수를 가져오는 방법:

        from 참치선물세트클래스 import 참치선물세트
      
    • 모듈 내 모든 내용을 가져오고 싶다면:

        from 참치선물세트클래스 import *
      
  3. 패키지(Package)

    • 패키지란?

      • 여러 모듈을 하나로 묶은 디렉토리.
      • 패키지는 폴더처럼 구성되며, __init__.py 파일이 포함됨.
    • 예시:

        import matplotlib.pyplot as plt  # 패키지(matplotlib)의 모듈(pyplot)을 가져옴
      
  4. 별명(Alias) 사용

    • 긴 이름을 짧게 줄여 사용할 수 있음.

    • 예시:

        import matplotlib.pyplot as plt  # pyplot을 plt로 사용
        plt.plot([1, 2, 3], [4, 5, 6])
        plt.show()
      
  5. 핵심 포인트

    • 모듈: 파일 단위의 코드 묶음.
    • 패키지: 여러 모듈을 묶은 디렉토리.
    • import 문법:
      • 특정 클래스/함수/변수 가져오기: from 모듈명 import 대상명
      • 모듈 내 모든 내용 가져오기: from 모듈명 import *
      • 별명 사용: import 모듈명 as 별명

04-7 파이썬에서 모든 것이 클래스

  1. 파이썬의 특징
    • 파이썬은 모든 자료형을 클래스로 설계하여 사용자가 쉽게 다룰 수 있도록 함.
    • 문자열, 리스트, 딕셔너리 등 다양한 자료형에서 클래스 메서드를 활용 가능.

  1. 5가지 주요 메서드 기능

1. 값의 위치 찾기

  • .index(값)

    • 리스트에서 원하는 값의 첫 번째 위치(인덱스)를 반환.

    • 예시:

        my_list = [1, 2, 3, 2]
        print(my_list.index(2))  # 결과: 1
      

2. 값의 개수 세기

  • .count(값)

    • 리스트에서 특정 값이 몇 번 나타나는지 반환.

    • 예시:

        my_list = [1, 2, 2, 3, 4]
        print(my_list.count(2))  # 결과: 2
      

3. 값 추가하기 (리스트 전용)

  • .append(값): 리스트의 맨 뒤에 값 추가.

  • .extend([값1, 값2]): 리스트의 맨 뒤에 여러 값 추가.

  • .insert(위치, 값): 리스트의 원하는 위치에 값 삽입.

  • 예시:

      my_list = [1, 2, 3]
      my_list.append(4)           # 결과: [1, 2, 3, 4]
      my_list.extend([5, 6])      # 결과: [1, 2, 3, 4, 5, 6]
      my_list.insert(2, 99)       # 결과: [1, 2, 99, 3, 4, 5, 6]
    
  • 주의: append나 insert에 extend처럼 여러 값을 넣으면 리스트 안에 중첩 리스트가 생성됨.

    • 예시:

        my_list = [1, 2]
        my_list.append([3, 4])  # 결과: [1, 2, [3, 4]]
      

4. 값 삭제하기 (리스트 전용)

  • .remove(값): 리스트에서 특정 값을 찾아 삭제.

  • .pop(위치): 리스트에서 해당 인덱스 위치의 값을 삭제하고 반환.

  • 예시:

      my_list = [1, 2, 3, 2]
      my_list.remove(2)          # 결과: [1, 3, 2]
      my_list.pop(1)             # 결과: [1, 2]
    

5. 순서 변경하기 (리스트 전용)

  • .reverse(): 리스트의 순서를 반대로 변경.

  • .sort(): 리스트의 값을 정렬 (오름차순 기본).

    • 내림차순 정렬: sort(reverse=True)
  • 예시:

      my_list = [3, 1, 4, 2]
      my_list.reverse()          # 결과: [2, 4, 1, 3]
      my_list.sort()             # 결과: [1, 2, 3, 4]
      my_list.sort(reverse=True) # 결과: [4, 3, 2, 1]
    

  1. 핵심 포인트
    • 파이썬의 모든 자료형은 클래스이므로 다양한 메서드를 제공함.
    • 리스트 전용 메서드: 값 추가, 삭제, 순서 변경 등 다양한 작업 가능.
    • 주의: .append()나 .insert()로 다차원 리스트가 생성될 수 있음.
    • 메서드 사용법을 이해하면 자료형을 효율적으로 다룰 수 있음.

04-8 파이썬에서 모든 것이 클래스 (딕셔너리 활용)

  1. 딕셔너리(Dictionary)의 특징
    • 딕셔너리는 key-value 쌍으로 데이터를 저장.
    • 리스트나 튜플처럼 순서가 아닌 키(key)로 값을 관리. 즉 방식이 다름.
    • 리스트와는 다른 메서드를 제공.

  1. 주요 딕셔너리 메서드

1. Key 값만 뽑아내기

  • .keys(): 딕셔너리의 키 값만 반환.

  • 리스트/튜플로 변환:

      키값만 = 딕셔너리.keys()
      키_리스트 = list(키값만)
      키_튜플 = tuple(키값만)
  • 반복문 예시:

      for 키값 in 딕셔너리.keys():
          print(키값)

2. Value 값만 뽑아내기

  • .values(): 딕셔너리의 값(value)만 반환.

  • 리스트/튜플로 변환:

      벨류만 = 딕셔너리.values()
      벨류_리스트 = list(벨류만)
      벨류_튜플 = tuple(벨류만)
  • 반복문 예시:

      for 벨류값 in 딕셔너리.values():
          print(벨류값)
    

3. Key 값으로 삭제하기

  • .pop(key): 딕셔너리에서 특정 키를 찾아 삭제.

    • 리스트처럼 인덱스로 삭제할 수 없으며, key를 사용해야 함.

    • 예시:

        my_dict = {'이름': '홍길동', '나이': 30}
        my_dict.pop('이름')  # 결과: {'나이': 30}
      

4. Key-Value 쌍 추가하기

  • 딕셔너리에 새로운 key-value를 추가.

  • 구문:

      딕셔너리[key] = value
    
  • 예시:

      my_dict = {'이름': '홍길동'}
      my_dict['주소'] = '서울시 송파구 삼전동'
      print(my_dict)  # 결과: {'이름': '홍길동', '주소': '서울시 송파구 삼전동'}
    

  1. 핵심 포인트
    • 딕셔너리는 key-value로 구성되며 순서가 아닌 key로 값에 접근.
    • .keys()와 .values()를 사용해 각각의 키와 값을 쉽게 가져올 수 있음.
    • .pop() 메서드로 key 값을 기준으로 삭제 가능 (value나 인덱스로 삭제 불가).
    • 새로운 key-value 쌍은 대입 연산자로 쉽게 추가.

반응형
저작자표시 비영리 변경금지 (새창열림)

'리뷰 > 책' 카테고리의 다른 글

[파이썬 코딩의 기술] - 2장 리스트와 딕셔너리  (0) 2025.02.14
[파이썬 코딩의 기술] - 1장 파이썬답게 생각하기  (0) 2025.02.14
Do it! 첫 코딩 - 5장  (0) 2025.02.14
Do it! 첫 코딩 - 3장  (0) 2025.02.14
Do it! 첫 코딩 - 2장 (컴퓨터는 어떻게 기억하고 행동할까?)  (0) 2025.02.14
'리뷰/책' 카테고리의 다른 글
  • [파이썬 코딩의 기술] - 1장 파이썬답게 생각하기
  • Do it! 첫 코딩 - 5장
  • Do it! 첫 코딩 - 3장
  • Do it! 첫 코딩 - 2장 (컴퓨터는 어떻게 기억하고 행동할까?)
생각 기록실
생각 기록실
AI(LLM)와 서비스 기획을 공부하며 작성하는 기술 블로그입니다. (feat. 영화리뷰를 곁들인..)
    반응형
  • 생각 기록실
    이러쿵 저러쿵
    생각 기록실
  • 전체
    오늘
    어제
  • 링크

    • Github
    • LindeIn
    • 분류 전체보기 (115)
      • 이러쿵 저러쿵 (5)
      • 정보통계 (7)
        • 데이터마이닝 (2)
        • 금융공학 (4)
      • IT (26)
        • Python (10)
        • AWS (5)
        • Github (2)
        • Project (8)
      • 리뷰 (29)
        • 영화 (22)
        • 책 (7)
      • 기타 (48)
  • hELLO· Designed By정상우.v4.10.3
생각 기록실
Do it! 첫 코딩 - 4장
상단으로

티스토리툴바