내일배움캠프

[내일배움캠프] TIL 16일차 26.01.14(수)

nom_de_plume 2026. 1. 14. 19:01

파이썬 세션 수업날 5일차

 

클래스

- 클래스(Class)

  • 객체(인스턴스)를 만들기 위한 설계도나 틀
  • OOP의 핵심 개념
  • 관련된 데이터와 기능을 논리적 단위로 묶어내면 큰 규모의 프로그램을 더 체계적이고 유지 관리하기 쉽게 만들 수 있음.
  • 속성(특징,데이터)과 메소드(기능,함수)로 구성
class 클래스이름:
    # 클래스 본문
    # 속성(변수)과 메서드(함수)를 정의
  • 클래스 이름은 관례적으로 단어의 첫 글자를 대문자로!

- 인스턴스(Instance)

  • 특정 클래스로부터 생성된 객체
  • 인스턴스랑 객체는 혼용되어 쓰이기도 함

- 객체(Object)

  • 클래스를 통해 만들어낸 실제 사물(인스턴스)
  • 클래스를 붕어빵 틀이라고 한다면, 객체는 그 틀로 찍어낸 붕어빵

- __init__생성자

def __init__(self, name, age):
        self.name = name  # 인스턴스 변수
        self.age = age # 인스턴스 변수
  • 인스턴스가 생성될 때 자동으로 호출되는 메서드
  • 생성될때 호출된다고 해서 생성자(constructor)라고도 불림
  • 인스턴스 생성 시 초기화 과정 수행 가능

- 객체 생성

  • 클래스 정의한 후에는 클래스를 호출하는 형식으로 객체 생성 가능

- 인스턴스 변수(instance variable) (=데이터 관리)

  • 각 객체마다 별로 관리되는 변수
  • self.name, self.age와 같이 self를 통해 참조하는 변수
  • 각각 인스턴스마다 각각 값을 가질 수 있다.

- 클래스 변수(class variable)  (=데이터 관리)

  • 클래스로부터 만들어진 모든 인스턴스가 공유하는 변수
  • 클래스 블록 내에서 self 없이 바로 변수를 정의하면 클래스 변수로 설정

- 인스턴스 메서드(Instance Method)  (=기능 구현)

  • 고유의 변수(인스턴스 변수)를 다루는 함수
  • 각 인스턴스에서 동작

- 클래스 메서드(Class Method) (=기능 구현)

  • 틀자체(클래스)에 대한 것을 다루는 함수
  • 클래스 자체를 인자로 받는다. (클래스 = 틀)
  • 클래스 변수를 다루는 상황 / 새로운 인스턴스를 생성하는 메서드 등을 정의할 때 활용

- 정적 메서드(Static Method) (=기능 구현)

  • 함수
  • 첫번째 매개변수로 self나 cls 받지 않는다.
  • 클래스에 굳이 소속될 필요 없지만, 분류상 틀에 넣어야 깔끔해서 넣는 경우. (주로 클래스나 인스턴스 변수에 접근할 필요가 없는 경우)
  • 데코레이터 @staticmethod 를 사용

1교시 실습 코드 정리:

https://colab.research.google.com/drive/1BIMMGKaXvourlbI9_aVuuW5V_xQZxXBm?usp=sharing

 

 

- 접근 지정자와 캡슐화 (=코드 재사용성, 유연성 극대화)

관례적으로 변수나 메서드 앞에 언더스코어(_)를 붙여 내부적으로 사용함을 암시

_변수명 : 해당 변수는 내부적 용도로 사용되는 것 암시 (개발자간 약속)

__변수명: 외부에서 접근하기 어렵게 강제. 즉, 클래스에 속한 메서드들만 이 변수에 접근 가능

캡슐화를 통해 내부 데이터는 메서드로만 접근 가능하게 하여 데이터 무결성 보장

 

- 상속 (=코드 재사용성, 유연성 극대화)

기존 클래스를 재사용하여 새로운 클래스를 만들 수 있게 하는 기능

상속을 통해 기존 클래스(부모 클래스 또는 슈퍼 클래스)의 변수 & 메서드 -> 자식 클래스(서브 클래스)에서 물려받을 수 있음.

필요하다면 물려받은 것을 확장 또는 수정 가능

 

- 다현성(Polymorphism) (=코드 재사용성, 유연성 극대화)

같은 메서드 이름이 다양한 클래스에서 다른 형태로 동작할 수 있음

 

- 오버라이딩(Overriding) (=코드 재사용성, 유연성 극대화)

자식 클래스에서 부모 클래스의 메서드를 재정의하는 것

 

2교시 실습 코드 정리:

https://colab.research.google.com/drive/1xjaEKk7YHUs3kP3K1txlY1biFfV59x0e?usp=sharing

 

 

isupper() 메서드 (확인용)

- 문자열이 모두 대문자로 구성되어 있는지를 확인하여 True 또는 False로 답해주는 함수

문자열.isupper()

 

  • 전부 대문자여야 함: 문자열 내의 모든 "알파벳"이 대문자일 때만 True를 반환합니다.
  • 알파벳이 아닌 문자: 숫자, 공백, 특수문자 등은 무시하지만, 적어도 하나 이상의 알파벳이 포함되어 있어야 합니다.
  • 소문자가 하나라도 섞이면: 바로 False를 반환합니다.

 

- 자주 함께 쓰이는 메서드들

  • islower() : 모든 알파벳이 소문자인지 확인
  • istitle() : 각 단어의 첫 글자만 대문자인지 확인
  • upper() : 문자열을 대문자로 변환
  • lower() : 문자열을 소문자로 변환

 

pop() 메서드

- 데이터를 꺼내오면서 동시에 삭제하는 기능

- 주로 리스트(List)와 딕셔너리(Dictionary)에서 사용

 

1. 리스트에서의 pop()

- 리스트의 특정 인덱스에 있는 요소를 제거하고, 그 제거된 값을 반환

  • 반환값 존재: 삭제된 데이터를 변수에 담아 나중에 다시 사용할 수 있습니다.
  • 인덱스 조정: 중간 요소를 pop()하면 뒤에 있던 요소들이 앞으로 한 칸씩 당겨집니다.
list.pop(index)
  • index (선택): 삭제할 요소의 위치 번호입니다.
  • 비워둘 경우: 가장 마지막 요소(-1 인덱스)를 꺼냅니다.

 

2. 딕셔너리에서의 pop()

- 특정 키(Key)를 지정하여 해당 키-값 쌍을 삭제하고, 값(Value)을 반환

dictionary.pop(key, default)
  • key: 삭제할 데이터의 키입니다.
  • default (선택): 키가 없을 경우 에러 대신 반환할 값입니다. (설정 안 하면 KeyError 발생)

3. 비슷한 기능

매서드 / 명령어 특징 반환값
pop() 인덱스나 키로 삭제 있음 (삭제된 값)
remove() 값(value)을 직접 찾아서 삭제 없음
del 인덱스나 키로 삭제 (명령어) 없음
clear() 모든 요소를 삭제하여 비움 없음

 

오늘 한 일 점검

- 파이썬 클래스, 파일 내용 및 예제 정리

- 데이터 전처리 & 시각화 챕터 3 수강 -> 3-4까지만 수강

- sql 알고리즘 코드카타 3개

- Python 코드카타 3개

 

26.01.15(목) 할 일

- 파이썬 세션 듣기

- 데이터 전처리 & 시각화 챕터 3-5 ~ 8 수강 및 정리

- sql 알고리즘 코드카타 3개

- Python 코드카타 3개

 

오늘의 회고

이해한듯 이해못한듯 한 상태이다. 뭔가 집중력이 저하된것 같기도 하고.. 내일 내용 정리를 듣고 정리 겸 연습문제를 다시 풀어보는 시간을 빠르게 가져보는 것도 좋을 것 같다. 그 후 잘 풀린다면 4차 세션의 심화문제를 재도전해보고자 한다. 이번에도 안되면 인간튜터님께 H.E.L.P 할 예정..