week1-day5

Eden.YangΒ·2025λ…„ 3μ›” 12일

MES

λͺ©λ‘ 보기
6/9

βœ… κΈˆμš”μΌ (객체지ν–₯ κΈ°λ³Έ) - ν΄λž˜μŠ€μ™€ 객체

πŸ“Œ 였늘 배울 핡심 κ°œλ…:
βœ”οΈ 클래슀(class)와 객체(object) κ°œλ… 이해
βœ”οΈ μƒμ„±μž(__init__)λ₯Ό μ‚¬μš©ν•œ 객체 μ΄ˆκΈ°ν™”
βœ”οΈ 속성(attribute)κ³Ό λ©”μ„œλ“œ(method) ν™œμš©


πŸ“Œ 1. 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP)μ΄λž€?

βœ”οΈ 객체(Object)λ₯Ό 기반으둜 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° 방식
βœ”οΈ μ‹€μ œ μ„Έκ³„μ˜ 사물을 ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 클래슀(Class)둜 λͺ¨λΈλ§
βœ”οΈ 데이터λ₯Ό 속성(Attribute), λ™μž‘μ„ λ©”μ„œλ“œ(Method)둜 μ •μ˜


πŸ“Œ 2. ν΄λž˜μŠ€μ™€ κ°μ²΄λž€?

βœ”οΈ 클래슀(Class):

  • 객체λ₯Ό λ§Œλ“€κΈ° μœ„ν•œ 청사진(ν‹€)
  • μ˜ˆμ‹œ: Person(μ‚¬λžŒ), Car(μžλ™μ°¨), Animal(동물)

βœ”οΈ 객체(Object):

  • ν΄λž˜μŠ€μ—μ„œ μƒμ„±λœ 싀체(μΈμŠ€ν„΄μŠ€)
  • μ˜ˆμ‹œ: Person β†’ "홍길동", "이영희"

πŸ“Œ 3. 클래슀 μ •μ˜ (class)

class Person:
    pass  # 빈 클래슀 (아직 λ‚΄μš© μ—†μŒ)

βœ… 클래슀λ₯Ό μ •μ˜ν•  λ•Œ class ν‚€μ›Œλ“œ μ‚¬μš©


πŸ“Œ 4. 객체 생성 (객체 = 클래슀())

person1 = Person()  # 객체 생성
person2 = Person()
print(type(person1))  # <class '__main__.Person'>

βœ… Person ν΄λž˜μŠ€λ‘œλΆ€ν„° person1, person2 객체 생성


πŸ“Œ 5. μƒμ„±μž (__init__) - 객체 μ΄ˆκΈ°ν™”

βœ”οΈ μƒμ„±μž(__init__)λŠ” 객체가 생성될 λ•Œ μžλ™ 싀행됨
βœ”οΈ selfλ₯Ό μ‚¬μš©ν•˜μ—¬ 객체 속성을 μ •μ˜

class Person:
    def __init__(self, name, age):  # μƒμ„±μž (μ΄ˆκΈ°ν™”)
        self.name = name  # 속성 μ„€μ •
        self.age = age

person1 = Person("홍길동", 25)  # 객체 생성
print(person1.name)  # 홍길동
print(person1.age)   # 25

βœ… self.name, self.ageλŠ” 각각 객체의 속성(데이터)


πŸ“Œ 6. 속성(attribute) - 객체의 데이터 μ €μž₯

βœ”οΈ 속성은 객체에 μ €μž₯λ˜λŠ” 데이터
βœ”οΈ self.속성λͺ… = κ°’ ν˜•μ‹μœΌλ‘œ μ •μ˜

class Car:
    def __init__(self, brand, model):
        self.brand = brand
        self.model = model

car1 = Car("Hyundai", "Sonata")
car2 = Car("Tesla", "Model 3")

print(car1.brand, car1.model)  # Hyundai Sonata
print(car2.brand, car2.model)  # Tesla Model 3

βœ… 각각 λ‹€λ₯Έ 데이터λ₯Ό κ°€μ§„ 두 개의 객체 생성


πŸ“Œ 7. λ©”μ„œλ“œ (def ν•¨μˆ˜()) - 객체의 λ™μž‘ μ •μ˜

βœ”οΈ λ©”μ„œλ“œ(Method): 클래슀 λ‚΄λΆ€μ—μ„œ μ •μ˜λœ ν•¨μˆ˜
βœ”οΈ 객체의 속성을 ν™œμš©ν•˜μ—¬ λ™μž‘ μˆ˜ν–‰

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):  # λ©”μ„œλ“œ μ •μ˜
        print(f"μ•ˆλ…•ν•˜μ„Έμš”, μ €λŠ” {self.name}μž…λ‹ˆλ‹€.")

person1 = Person("철수", 30)
person1.greet()  # μ•ˆλ…•ν•˜μ„Έμš”, μ €λŠ” μ² μˆ˜μž…λ‹ˆλ‹€.

βœ… self.name을 ν™œμš©ν•˜μ—¬ κ°μ²΄λ§ˆλ‹€ λ‹€λ₯Έ 좜λ ₯ κ°€λŠ₯


πŸ“Œ 8. 속성과 λ©”μ„œλ“œ μΆ”κ°€ 및 μˆ˜μ •

βœ”οΈ 객체의 속성을 λ³€κ²½ν•˜κ±°λ‚˜ μƒˆλ‘œμš΄ 속성을 μΆ”κ°€ν•  μˆ˜λ„ 있음

person1.age = 31  # 속성 λ³€κ²½
person1.job = "개발자"  # μƒˆλ‘œμš΄ 속성 μΆ”κ°€

print(person1.age)  # 31
print(person1.job)  # 개발자

βœ… κΈ°μ‘΄ 속성 λ³€κ²½ 및 μƒˆλ‘œμš΄ 속성 μΆ”κ°€ κ°€λŠ₯


🎯 과제

1️⃣ 클래슀λ₯Ό λ§Œλ“€μ–΄ 객체λ₯Ό μƒμ„±ν•˜λŠ” μ—°μŠ΅

# Animal 클래슀λ₯Ό λ§Œλ“€κ³ , nameκ³Ό species(μ’…) 속성을 μΆ”κ°€ν•˜μ„Έμš”.
class Animal:
    def __init__(self, name, species):
        self.name = name
        self.species = species

# Animal 객체λ₯Ό μƒμ„±ν•˜μ—¬ 이름과 쒅을 좜λ ₯ν•˜μ„Έμš”.
animal1 = Animal("Lion", "Mammal")
print(animal1.name)  # Lion
print(animal1.species)  # Mammal

2️⃣ 객체 λ©”μ„œλ“œ μΆ”κ°€ν•˜κΈ°

class Animal:
    def __init__(self, name, species):
        self.name = name
        self.species = species

    def make_sound(self):
        print(f"{self.name}κ°€ μ†Œλ¦¬λ₯Ό λƒ…λ‹ˆλ‹€.")

# Animal 객체 생성 ν›„ make_sound() μ‹€ν–‰
animal1 = Animal("개", "포유λ₯˜")
animal1.make_sound()  # κ°œκ°€ μ†Œλ¦¬λ₯Ό λƒ…λ‹ˆλ‹€.

3️⃣ μžλ™μ°¨ 클래슀 λ§Œλ“€κΈ°

class Car:
    def __init__(self, brand, model, year):
        self.brand = brand
        self.model = model
        self.year = year

    def display_info(self):
        print(f"μžλ™μ°¨ 정보: {self.year}λ…„ {self.brand} {self.model}")

# μžλ™μ°¨ 객체 생성 ν›„ 정보 좜λ ₯
car1 = Car("Hyundai", "Sonata", 2022)
car1.display_info()  # μžλ™μ°¨ 정보: 2022λ…„ Hyundai Sonata

4️⃣ μ‚¬λžŒ ν΄λž˜μŠ€μ— λ‚˜μ΄ 증가 κΈ°λŠ₯ μΆ”κ°€

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def birthday(self):
        self.age += 1
        print(f"생일 μΆ•ν•˜ν•©λ‹ˆλ‹€! 이제 {self.age}살이 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.")

# 객체 생성 ν›„ birthday() μ‹€ν–‰
person1 = Person("영희", 20)
person1.birthday()  # 생일 μΆ•ν•˜ν•©λ‹ˆλ‹€! 이제 21살이 λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

πŸ“Œ πŸ”₯ 였늘 배운 λ‚΄μš© 정리 πŸ”₯

κ°œλ…μ„€λͺ…
class클래슀λ₯Ό μ •μ˜ν•˜λŠ” ν‚€μ›Œλ“œ
objectν΄λž˜μŠ€λ‘œλΆ€ν„° μƒμ„±λœ 싀체
__init__()μƒμ„±μž, 객체 μ΄ˆκΈ°ν™” μ‹œ 싀행됨
self객체 μžμ‹ μ„ κ°€λ¦¬ν‚€λŠ” ν‚€μ›Œλ“œ
속성 (attribute)객체의 데이터 (예: self.name)
λ©”μ„œλ“œ (method)객체가 μˆ˜ν–‰ν•˜λŠ” λ™μž‘ (예: def greet(self))

βœ… 였늘 과제 μ™„λ£Œν•˜λ©΄?

βœ”οΈ ν΄λž˜μŠ€μ™€ 객체 κ°œλ…μ„ 이해!
βœ”οΈ 객체의 속성과 λ©”μ„œλ“œλ₯Ό 자유둭게 μΆ”κ°€!
βœ”οΈ μ‹€μ œ ν”„λ‘œκ·Έλž¨μ—μ„œ 객체λ₯Ό ν™œμš©ν•  수 있음!

이제 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°(OOP)이 더 μΉœμˆ™ν•΄μ‘Œμ§€? πŸš€πŸ”₯

profile
μ†λμ—μ„œ λ•…λμœΌλ‘œ, κ³¨λ°©μ—μ„œ μ—΄λ°©μœΌλ‘œ

0개의 λŒ“κΈ€