Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 OOP(객체 지향 프로그래밍) 핵심 개념 완벽 정리

파이썬 객체 지향 프로그래밍(OOP)이란?

파이썬은 대표적인 객체 지향 프로그래밍(Object-Oriented Programming, OOP) 언어입니다. 클래스와 객체를 손쉽게 만들고 활용할 수 있어, 코드의 재사용성과 유지보수성을 높이는 데 매우 효과적입니다.

파이썬 객체 지향 프로그래밍의 주요 개념은 다음과 같습니다.

  • 객체(Object)
  • 클래스(Class)
  • 메서드(Method)
  • 상속(Inheritance)
  • 다형성(Polymorphism)
  • 데이터 추상화(Data Abstraction)
  • 캡슐화(Encapsulation)

1. 객체(Object)

객체는 상태(state)와 행동(behavior)을 함께 가지는 실체입니다. 물리적으로 존재하는 대상일 수도 있고, 논리적인 개념일 수도 있습니다. 예를 들어 마우스, 키보드, 의자, 책상, 펜 등이 모두 객체가 될 수 있습니다.

파이썬에서는 모든 것이 객체이며, 거의 모든 객체는 속성(attribute)과 메서드(method)를 가집니다.


2. 클래스(Class)

클래스는 객체들을 모아 놓은 집합으로, 특정한 속성과 메서드를 정의하는 논리적인 설계도입니다. 예를 들어 '학생(Student)' 클래스를 만든다면 이메일, 이름, 나이, 학번과 같은 속성을 포함하도록 설계할 수 있습니다.

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

3. 메서드(Method)

메서드는 특정 객체와 연결된 함수를 의미합니다. 파이썬에서 메서드는 클래스 인스턴스에만 국한되지 않으며, 어떤 객체 타입이든 자신만의 메서드를 가질 수 있다는 점이 특징입니다.


4. 상속(Inheritance)

상속은 한 객체가 부모 객체의 모든 속성과 행동을 물려받는 것을 뜻합니다. 상속을 활용하면 기존 클래스를 거의 또는 전혀 수정하지 않고도 새로운 클래스를 정의할 수 있습니다.

이때 새롭게 만들어진 클래스를 '파생 클래스(derived class)' 또는 '자식 클래스(child class)'라고 부르며, 속성을 물려주는 원래 클래스를 '기반 클래스(base class)' 또는 '부모 클래스(parent class)'라고 합니다. 상속의 가장 큰 장점은 코드의 재사용성입니다.


5. 다형성(Polymorphism)

다형성은 하나의 작업을 여러 가지 방식으로 수행할 수 있음을 의미합니다. 예를 들어 '동물(Animal)' 클래스가 있고, 모든 동물이 말을 할 수 있다고 가정해 봅시다. 하지만 각 동물이 내는 소리는 서로 다릅니다.

즉, 추상적인 '동물' 자체는 실제로 '말하지 않으며', 구체적인 동물들이 각자 '말하기'라는 동작을 고유한 방식으로 구현하는 것입니다. 이처럼 같은 이름의 기능이라도 객체에 따라 다르게 동작하는 성질이 바로 다형성입니다.


6. 캡슐화(Encapsulation)

캡슐화는 메서드와 변수에 대한 외부 접근을 제한하는 기법입니다. 캡슐화를 적용하면 코드와 데이터를 하나의 단위로 묶어, 외부에서 의도치 않게 값이 변경되는 사고를 예방할 수 있습니다.


7. 데이터 추상화(Data Abstraction)

데이터 추상화는 캡슐화를 통해 구현되기 때문에 두 개념은 밀접한 관련이 있습니다.

추상화란 복잡한 내부 구현 세부사항은 숨기고, 사용자에게 필요한 기능만 보여주는 것을 의미합니다. 무언가를 추상화한다는 것은 대상에 이름을 붙여, 그 이름만으로 해당 함수나 프로그램이 수행하는 핵심 아이디어를 파악할 수 있게 만드는 과정이라고 할 수 있습니다.


마무리

지금까지 파이썬 객체 지향 프로그래밍의 7가지 핵심 개념인 객체, 클래스, 메서드, 상속, 다형성, 캡슐화, 데이터 추상화를 살펴보았습니다. 이 개념들은 서로 긴밀하게 연결되어 있으며, 이를 잘 이해하면 더 깔끔하고 확장 가능한 파이썬 코드를 작성할 수 있습니다.