반응형
Day 1: 인스턴스 메서드
- 강의 내용:
- 인스턴스 메서드의 개념
- 인스턴스 메서드 정의
- self 키워드의 의미
- 인스턴스 메서드 작성 및 호출
- 인스턴스 메서드 작성 방법
- 인스턴스 메서드 호출
- 인스턴스 메서드의 개념
- 실습:
- 인스턴스 메서드를 사용하는 클래스 예제 작성
# 클래스 정의
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
print(f"Hello, my name is {self.name} and I am {self.age} years old.")
# 객체 생성 및 사용
person1 = Person("Alice", 30)
person1.greet() # 'Hello, my name is Alice and I am 30 years old.'
person2 = Person("Bob", 25)
person2.greet() # 'Hello, my name is Bob and I am 25 years old.'
Day 2: 클래스 메서드
- 강의 내용:
- 클래스 메서드의 개념
- 클래스 메서드 정의
- @classmethod 데코레이터
- cls 키워드의 의미
- 클래스 메서드 작성 및 호출
- 클래스 메서드 작성 방법
- 클래스 메서드 호출
- 클래스 메서드의 개념
- 실습:
- 클래스 메서드를 사용하는 클래스 예제 작성
# 클래스 정의
class Person:
species = "Homo sapiens" # 클래스 변수
def __init__(self, name, age):
self.name = name
self.age = age
def greet(self):
print(f"Hello, my name is {self.name} and I am {self.age} years old.")
@classmethod
def describe_species(cls):
print(f"Humans are {cls.species}.")
# 객체 생성 및 사용
person1 = Person("Alice", 30)
person1.greet() # 'Hello, my name is Alice and I am 30 years old.'
person2 = Person("Bob", 25)
person2.greet() # 'Hello, my name is Bob and I am 25 years old.'
# 클래스 메서드 호출
Person.describe_species() # 'Humans are Homo sapiens.'
Day 3: 정적 메서드
- 강의 내용:
- 정적 메서드의 개념
- 정적 메서드 정의
- @staticmethod 데코레이터
- 정적 메서드 작성 및 호출
- 정적 메서드 작성 방법
- 정적 메서드 호출
- 정적 메서드의 개념
- 실습:
- 정적 메서드를 사용하는 클래스 예제 작성
# 클래스 정의
class MathUtils:
@staticmethod
def add(a, b):
return a + b
@staticmethod
def subtract(a, b):
return a - b
# 정적 메서드 호출
print(MathUtils.add(10, 5)) # 15
print(MathUtils.subtract(10, 5)) # 5
Day 4: 메서드 오버라이딩
- 강의 내용:
- 메서드 오버라이딩의 개념
- 메서드 오버라이딩 정의
- 부모 클래스와 자식 클래스의 메서드
- 메서드 오버라이딩 사용 예제
- 메서드 오버라이딩의 개념
- 실습:
- 메서드 오버라이딩을 사용하는 클래스 예제 작성
# 부모 클래스 정의
class Animal:
def speak(self):
return "Some sound"
# 자식 클래스 정의
class Dog(Animal):
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return "Meow!"
# 객체 생성 및 사용
dog = Dog()
cat = Cat()
print(dog.speak()) # 'Woof!'
print(cat.speak()) # 'Meow!'
Day 5: 메서드 체이닝
- 강의 내용:
- 메서드 체이닝의 개념
- 메서드 체이닝 정의
- 메서드 체이닝의 장점
- 메서드 체이닝 구현
- self 반환을 통한 체이닝 구현
- 메서드 체이닝의 개념
- 실습:
- 메서드 체이닝을 사용하는 클래스 예제 작성
# 클래스 정의
class Person:
def __init__(self, name):
self.name = name
def set_age(self, age):
self.age = age
return self
def set_city(self, city):
self.city = city
return self
def display_info(self):
print(f"Name: {self.name}, Age: {self.age}, City: {self.city}")
return self
# 메서드 체이닝 사용
person = Person("Alice").set_age(30).set_city("New York").display_info()
Day 6: 메서드 데코레이터
- 강의 내용:
- 메서드 데코레이터의 개념
- 데코레이터의 정의와 사용
- @property 데코레이터
- @classmethod, @staticmethod 데코레이터 복습
- @property 데코레이터
- 게터와 세터 메서드 정의
- 메서드 데코레이터의 개념
- 실습:
- @property 데코레이터를 사용하는 클래스 예제 작성
# 클래스 정의
class Person:
def __init__(self, name, age):
self._name = name
self._age = age
@property
def name(self):
return self._name
@name.setter
def name(self, value):
self._name = value
@property
def age(self):
return self._age
@age.setter
def age(self, value):
if value < 0:
raise ValueError("Age cannot be negative")
self._age = value
# 객체 생성 및 사용
person = Person("Alice", 30)
print(person.name) # 'Alice'
print(person.age) # 30
person.name = "Bob"
person.age = 25
print(person.name) # 'Bob'
print(person.age) # 25
try:
person.age = -5
except ValueError as e:
print(e) # 'Age cannot be negative'
Day 7: 메서드 종합 연습 및 프로젝트
- 강의 내용:
- 메서드 종합 연습 문제 풀이
- 다양한 메서드 관련 문제
- Q&A 세션
- 미니 프로젝트
- 주제 선정 및 프로그램 설계
- 메서드를 활용한 프로그램 구현 및 테스트
- 메서드 종합 연습 문제 풀이
- 실습:
- 종합 연습 문제 풀기
- 미니 프로젝트 작성 및 발표
# 연습 문제 1: 도형 클래스를 작성하고, 면적과 둘레를 계산하는 메서드 추가
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
def perimeter(self):
return 2 * (self.width + self.height)
rect = Rectangle(4, 5)
print(f"Area: {rect.area()}") # Area: 20
print(f"Perimeter: {rect.perimeter()}") # Perimeter: 18
# 연습 문제 2: 은행 계좌 클래스에 클래스 메서드를 추가하여 총 계좌 수를 관리
class BankAccount:
account_count = 0
def __init__(self, owner, balance=0):
self.owner = owner
self.balance = balance
BankAccount.account_count += 1
def deposit(self, amount):
self.balance += amount
def withdraw(self, amount):
if amount <= self.balance:
self.balance -= amount
else:
print("Insufficient funds")
@classmethod
def total_accounts(cls):
return cls.account_count
account1 = BankAccount("Alice")
account2 = BankAccount("Bob")
print(BankAccount.total_accounts()) # 2
# 미니 프로젝트 예제: 재고 관리 시스템
class Product:
def __init__(self, name, price, quantity):
self.name = name
self.price = price
self.quantity = quantity
def update_quantity(self, amount):
self.quantity += amount
return self
def update_price(self, new_price):
self.price = new_price
return self
def display_info(self):
print(f"Product: {self.name}, Price: {self.price}, Quantity: {self.quantity}")
return self
# 제품 생성 및 메서드 체이닝 사용
product = Product("Laptop", 1500, 10)
product.update_quantity(5).update_price(1400).display_info()
이 강의는 파이썬의 객체지향 프로그래밍에서 메서드를 익히는 것을 목표로 하며, 각 강의는 이론과 실습을 포함합니다. 다음 주차에 대한 상세 강의를 원하시면 말씀해 주세요!
반응형
'-----ETC2----- > Python' 카테고리의 다른 글
[Python] Week 20: 객체지향 프로그래밍 - 다형성 (0) | 2024.06.01 |
---|---|
[Python] Week 19: 객체지향 프로그래밍 - 상속 (0) | 2024.06.01 |
[Python] (수정 필요)Week 17: 객체지향 프로그래밍 - 클래스와 객체 (0) | 2024.06.01 |
[Python] Week 16: 패키지 (0) | 2024.06.01 |
[Python] Week 15: 모듈 (0) | 2024.06.01 |