클래스(Class)
클래스는 객체를 만들어내는 설계도(Blueprint)
객체의 필드(field)와 메소드(method)를 정의하는 틀
# 필드(field): 클래스 또는 객체가 가지고 있는 데이터 (= member variable, attribute, instance variable)
# 메소드(method): 클래스 내부에 정의된 함수(클래스에 종속)
class Person:
def __init__(self, name, age):
self.name = name # 속성(인스턴스 변수)
self.age = age # 속성(인스턴스 변수)
def speak(self): # 메서드
print(f"안녕하세요, 저는 {self.name}입니다.")
파이썬에서 클래스를 정의할 땐 class 키워드 사용
클래스 정의 안에 __init__ 메소드가 있으면, 객체가 생성될 때(인스턴스화 될 때) 자동으로 호출되어 초기화 작업 진행
self는 인스턴스 자신을 가리키는 예약어로, 인스턴스 내부 속성이나 메소드 접근시 사용
---🐢
객체(Object)
객체는 실제로 존재하는 것(물리적 /개념적 실체 등) 또는 클래스의 인스턴스를 가리킴
프로그래밍에서 '객체'는 클래스라는 설계도를 통해 만들어진 실체이며, 필드(속성)와 메소드(행동)을 가지고 있음
--🐢-
인스턴스(Instance)
특정 클래스에 속하는 객체
인스턴스화(Instantiation)
p1 = Person("홍길동", 30) # Person 클래스의 인스턴스 p1 생성
p2 = Person("이몽룡", 20) # Person 클래스의 인스턴스 p2 생성
p1, p2가 각각 Person 클래스의 인스턴스
클래스는 설계도이고, 실제로 메모리에 올라가서 사용 가능한 대상이 되는 과정을 인스턴스화라 부름
인스턴스 멤버 접근
print(p1.name) # 홍길동
print(p1.age) # 30
p1.speak() # "안녕하세요, 저는 홍길동입니다."
인스턴스 p1 안에는 self.name, self.age와 같은 속성(필드)이 있고, speak() 메소드 호출 가능
-🐢--
클래스와 인스턴스 관계
클래스: “속성+메서드”라는 로직과 구조를 정의해 둔 설계도
인스턴스: 클래스(설계도)를 통해 실제로 생성된 객체
즉, 클래스가 있더라도 직접 인스턴스를 생성하지 않으면 사용이 불가능
# 하나의 클래스로 여러 개의 인스턴스를 만들 수 있음
# 각각의 인스턴스는 공통된 특성(클래스에 정의된 속성과 메서드)을 공유하되, 속성 값은 서로 다를 수 있음
🐢---
인스턴스 변수, 클래스 변수
인스턴스 변수
self.name, self.age처럼 인스턴스마다 개별적으로 존재하는 변수
각각의 인스턴스에서 서로 다른 값을 가질 수 있음
클래스 변수
인스턴스마다 공통으로 사용되는 변수
클래스 정의 내부에서 self 없이 선언하거나, 클래스 이름을 통해 접근
class Person:
species = "Homo sapiens" # 클래스 변수
def __init__(self, name, age):
self.name = name # 인스턴스 변수
self.age = age
p1 = Person("홍길동", 30)
p2 = Person("이몽룡", 20)
print(p1.species) # Homo sapiens
print(p2.species) # Homo sapiens
# 모든 Person 인스턴스가 같은 클래스 변수를 공유
'언어 > Python' 카테고리의 다른 글
예외 처리 (0) | 2025.01.02 |
---|---|
패키지(Package) (2) | 2025.01.01 |
함수(Function) (0) | 2024.12.31 |
리스트 컴프리헨션 (1) | 2024.12.30 |
딕셔너리/집합/불 자료형, 변수 알아보기 (2) | 2024.12.26 |