IT/Python

[Python] 파이썬 클래스와 객체지향 프로그램 기초

멋진 선배 2025. 1. 9. 15:29
반응형

파이썬의 핵심 개념 중 하나인 클래스와 객체지향 프로그램밍(OOP)에 대해서 알아보겠습니다. 이 개념들은 파이썬 프로그래밍의 근간이 되는 중요한 주제 입니다.

 

객체지향 프로그래밍이란?

객체지향 프로그래밍(OOP)은 프로그램을 객체들의 모음으로 구성하는 프로그래밍 패러다임 입니다. 여기서 객체란 데이터(속성)와 그 데이터를 처리하는 메서드(행동)를 하나의 단위로 묶는 것을 말합니다.

 

OOP의 주요 장점은 다음과 같습니다.

  1. 코드의 재사용성 향상
  2. 유지보수 용이성
  3. 프로그램의 구조화 

파이썬 클래스 기초

파이썬에서 클래스는 객체를 생성하기 위한 템플릿 또는 청사진 역할을 합니다. 클래스를 정의하는 기본 구조는 다음과 같습니다.

# 클래스 속성
class ClassName:
	# 클래스 속성
    class_attribute = value
    
    # 초기화 메서드
    def __init__(self, param1, param2):
    	self, param1 = param1
        self, param2 = param2
        
	# 인스턴트 메서드
    def method_name(self) :
    	# 메소드 내용

여기서 '__init__'  메서드는 특별한 메서드로, 객체가 생성될 때 자동으로 호출되어 객체를 초기화 합니다.

객체 생성과 사용

클래스를 정의한 후 우리는 이를 바탕으로 객체(인스턴스)를 생할 수 있습니다.

# 객체 생성
object_name = ClassName(arg1, arg2)

# 객체의 메서드 호출
object_name.method_name()

# 객체의 속성 접근
print(object_name.attribute_name)

상속

OOP의 중요한 특징 중 하나는 상속 입니다. 상속을 통해 기존 클래서의 속성과 메서드를 새로운 클래스에서 재사용 할 수 있습니다.

class ParentClass :
	# 부모 클래스 내용
    
class ChildClass(ParentClass) :
	# 자식 클래스 내용

자식 클래스는 부모 클래서의 모든 속성과 메서드를 상속받으며, 필요에 따라 새로운 속성과 메서드를 추가하거나 기존 메서드를 오버라이드 할 수 있습니다.

캡슐화

캡슐화는 데잍와 그 데이터를 처리하는 메서드를 하나로 묶는 것을 의미 합니다. 파이썬에서는 언더스코어를 사용하여 속성이나 메서드의 접근 제어를 할 수 있습니다.

class MyClass :
	def __init__(self) :
    	self._protected_var = 10
        self.__private_var = 20
        
 	def _protected_method(self) :
    	pass
        
    def __private_method(self) :
    	pass

단일 언더스코어('_')는  protected를, 이중 언더스코어('__')는 private를 나타 냅니다.

다형성

다형성은 같은 이름의 메서드가 다른 클래스에서 다르게 동작할 수 있음을 의미합니다. 이는 코드의 유연성을 높이고 재사용성을 향상시킵니다.

class Animal :
	def speak(self):
    	pass
        
class Dog(Animal) :
	def speak(self):
    	return "Woof!"
        
class Cat(Animal):
	def speak(self):
    	return ("Meow!")

 

실제 예제

이제 배운 개념들을 활용하여 간단한 예제를 만들어보겠습니다.

class Book:
	def __init__(self, title, author, pages):
    	self.title = title
        self.author = author
        self.pages = pages
        
    def __str__(self):
    	return f"{self.title} by {self.author}"
        
    def is_long(self):
    	return self.pages > 300
        
# 객체생성
book1 = Book("Python Crash Course", "Eric Matthes", 544)
book2 = Book("Automate the Boring Stuff with Python", "Al Sweigart", 592)

# 객체 메서드 사용
print(book1) # Python Crash Course by Eric Mattes
print(book2.is_long()) # True

 이 예제에서 우리는 'Book' 클래스를 정의하고, 두개의 'Book' 객체를 생성했습니다. '__str__' 메서드를 오버라이드하여 객체를 문자열로 표현하는 방법을 저의했고, 'is_long' 메서드를 통해 책의 길이를 판단하는 기능을 추가했습니다.

 

결론

객체지향 프로그래밍은 파이썬에서 매우 중요한 개념 입니다. 클래스와 객체를 활용하면 복잡한 프로그램을 더 구조화되고 관리하기 쉬운 형태로 만들 수 있습니다. 이 글에서 다룬 기본 개념들을 잘 이해하고 연습한다면, 더 효율적이고 유지보수가 쉬운 코드를 작성 할 수 있을 것 입니다.

 

 

반응형