728x90
반응형
2024.12.20 - [개발관련] - 파이썬 강좌 8 - 모듈과 패키지
파이썬 강좌 8 - 모듈과 패키지
2024.12.20 - [개발관련] - 파이썬 강좌 7 - 예외처리 파이썬 강좌 7 - 예외처리2024.12.20 - [개발관련] - 파이썬 강좌 6 - 파일 입출력 파이썬 강좌 6 - 파일 입출력2024.12.20 - [개발관련] - 파이썬 강좌 5 -
woowonwoo.tistory.com
9장: 객체지향 프로그래밍(OOP)
객체지향 프로그래밍(OOP)은 데이터와 **그 데이터를 처리하는 방법(메서드)**을 객체로 묶어 효율적으로 코드를 설계하는 프로그래밍 패러다임입니다.
파이썬은 객체지향 언어로, 클래스와 객체를 쉽게 생성하고 사용할 수 있습니다.
1. 객체지향 프로그래밍의 기본 개념
- 클래스(Class)
객체를 생성하기 위한 설계도입니다. 클래스에는 속성(데이터)과 메서드(기능)가 포함됩니다. - 객체(Object)
클래스로부터 생성된 인스턴스입니다. 클래스의 실제 구현체입니다. - 속성(Attribute)
객체가 가지는 데이터입니다. - 메서드(Method)
객체가 수행할 수 있는 동작(함수)입니다.
2. 클래스 정의와 객체 생성
2.1 클래스 정의
클래스는 class 키워드를 사용하여 정의합니다.
class Person:
# 클래스 초기화 메서드
def __init__(self, name, age):
self.name = name # 속성
self.age = age # 속성
# 메서드
def greet(self):
print(f"안녕하세요, 제 이름은 {self.name}이고, 나이는 {self.age}살입니다.")
2.2 객체 생성
클래스를 통해 객체를 생성합니다.
person1 = Person("바보", 22) # 객체 생성
person1.greet() # 출력: 안녕하세요, 제 이름은 바보이고, 나이는 22살입니다.
3. 클래스의 구성 요소
- __init__ 메서드 (생성자)
객체가 생성될 때 자동으로 호출되는 초기화 메서드입니다.
def __init__(self, name, age):
self.name = name
self.age = age
- 인스턴스 속성
self를 사용하여 각 객체에 고유한 값을 부여합니다. - 인스턴스 메서드
self를 통해 객체의 속성에 접근하거나 동작을 정의합니다.
def greet(self):
print(f"안녕하세요, {self.name}입니다.")
- 클래스 속성
모든 객체가 공유하는 속성을 정의합니다.
class Person:
species = "Homo sapiens" # 클래스 속성
4. 객체지향의 주요 특징
- 캡슐화(Encapsulation)
속성과 메서드를 하나로 묶고, 외부에서 접근을 제한합니다.
class Person:
def __init__(self, name):
self.__name = name # 비공개 속성
def get_name(self):
return self.__name # 공개 메서드
- 상속(Inheritance)
기존 클래스의 속성과 메서드를 새로운 클래스에서 물려받는 기능입니다.
class Animal:
def speak(self):
print("소리를 냅니다.")
class Dog(Animal): # Animal 클래스를 상속
def speak(self):
print("멍멍!")
- 다형성(Polymorphism)
동일한 메서드 이름이 다양한 객체에서 다르게 동작합니다.
class Cat(Animal):
def speak(self):
print("야옹!")
- 추상화(Abstraction)
객체의 중요한 속성과 메서드만 외부에 노출하여 복잡성을 줄입니다.
5. 클래스의 고급 기능
5.1 클래스 메서드
클래스 속성을 다루기 위해 사용하며, @classmethod 데코레이터를 사용합니다.
class Person:
species = "Homo sapiens"
@classmethod
def get_species(cls):
return cls.species
5.2 정적 메서드
클래스와 객체에 의존하지 않는 메서드로, @staticmethod 데코레이터를 사용합니다.
class Math:
@staticmethod
def add(a, b):
return a + b
print(Math.add(3, 5)) # 출력: 8
5.3 매직 메서드 (Magic Method)
특수한 동작을 정의하는 메서드입니다.
- __str__: 객체를 문자열로 표현할 때 호출.
- __add__: + 연산자 동작을 정의.
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, other):
return Point(self.x + other.x, self.y + other.y)
def __str__(self):
return f"Point({self.x}, {self.y})"
p1 = Point(2, 3)
p2 = Point(4, 5)
print(p1 + p2) # 출력: Point(6, 8)
6. 연습 문제
- 간단한 학생 클래스 만들기
class Student:
def __init__(self, name, grade):
self.name = name
self.grade = grade
def introduce(self):
print(f"저는 {self.name}이고, 학년은 {self.grade}학년입니다.")
student = Student("바보", 3)
student.introduce()
- 상속 활용
class Vehicle:
def drive(self):
print("차량이 달립니다.")
class Car(Vehicle):
def drive(self):
print("자동차가 달립니다.")
car = Car()
car.drive()
- 클래스 속성과 메서드 사용
class Circle:
pi = 3.14
def __init__(self, radius):
self.radius = radius
def area(self):
return Circle.pi * (self.radius ** 2)
c = Circle(5)
print(c.area()) # 출력: 78.5
7. 요약
- 클래스와 객체: 클래스를 설계도로 하여 객체를 생성.
- 객체지향 특징: 캡슐화, 상속, 다형성, 추상화.
- 메서드 종류: 인스턴스 메서드, 클래스 메서드, 정적 메서드.
- 매직 메서드: 객체의 특수한 동작을 정의하는 메서드.
다음 장에서는 파이썬 웹크롤링과 관련된 내용을 다룹니다! 😊
728x90
반응형
'개발관련' 카테고리의 다른 글
자바스크립트로 웹 크롤링 하는 법 (0) | 2024.12.21 |
---|---|
파이썬 웹 크롤링 강좌 (2) | 2024.12.21 |
Firebase Cloud Functions에서 puppeteer 실행이 안될때 (0) | 2024.12.21 |
Firebase Cloud Functions Deploy 해도 반영 안될때 (0) | 2024.12.21 |
파이썬 강좌 8 - 모듈과 패키지 (1) | 2024.12.20 |
파이썬 강좌 7 - 예외처리 (0) | 2024.12.20 |
파이썬 강좌 6 - 파일 입출력 (0) | 2024.12.20 |
파이썬 강좌 5 - 자료구조 (0) | 2024.12.20 |