객체와 객체 사이의 상호작용으로 프로그램을 구성하는 프로그래밍 패러다임
객체: 추상화 + 캡슐화의 결과
→ 실세계의 사물에 대한 상태(데이터)와 연산(메소드)를 표현한 단위
→ 멤버(데이터 필드, 메소드)는 클래스에 의해 결정

class 클래스 이름:
초기자 정의
메소드 정의
method)initializer)__init__으로 명명class 클래스 이름:
def 메소드 이름(self, 매개변수 리스트):
코드 블럭
💡
self매개변수란?
모든 메소드의 첫 번째 매개변수
→ 사용범위: 메소드 구현⭕ 메소드 호출❌
→ 객체 자신을 참조하여 클래스 정의에 포함된 멤버에 접근 시 사용
UML클래스 다이어그램 통해 데이터필드, 생성자, 메소드 표현 방법 표준화
→ 데이터 필드 이름: 데이터 필드 이름
→ 클래스 이름(매개변수 이름: 매개변수 타입)
→ 메소드 이름(매개변수 이름: 매개변수 타입): 반환값 타입
UML 클래스 다이어그램
클래스 이름 (초기자 파라미터)
constructor)를 통해 클래스의 인스턴스 생성
객체의 데이터 필드 접근 및 메서드 호출
→ 객체 멤버 접근 연산자(.) 사용
객체 참조변수.데이터 필드
객체 참조변수.메소드(파라미터)
→ 객체 참조변수를 사용하여 객체를 생성
객체 참조변수 = 클래스 이름(초기자 파라미터)
"Korea National Open University".lower()

str 메소드| 메소드 | 설명 |
|---|---|
upper(), lower() | 대/소 문자로 변경 |
title() | 각 단어의 첫 글자를 대문자로 변경 |
strip(), rstrip(), lstrip() | 양쪽/왼쪽/오른쪽의 특정 문자를 제거 |
replace() | 문자열 특정 부분을 대체 |
split() | 구분자로 분할하여 리스트로 반환 |
"I love python".upper()
"I love python".replace("o", "i")
isymbol = "I love python".replace("o", "i")
dir(str)
💡 데이터 은닉
data hiding
데이터 필드의 직접 변경을 방지하기 위해 사용자의 직접적 접근 차단
→public과 다른private데이터 필드로 정의
private 데이터 필드
→ 클래스 내부에서만 접근 가능
→ 앞 두 밑줄(__)로 정의
self.__r
self.__h
private으로 정의된 데이터 필드는 객체 외부에서 접근 불가능

private 데이터 필드에 접근하는 메서드accessor): 데이터 필드 반환mutator): 데이터 필드 설정