728x90
728x90
파이썬 클래스: 메소드와 속성 심층 분석
**객체지향 프로그래밍(OOP)**의 핵심 개념인 클래스는 파이썬에서 코드를 조직하고 재사용성을 높이는 데 중요한 역할을 합니다. 클래스는 **속성(attribute)**과 **메소드(method)**라는 두 가지 주요 구성 요소로 이루어져 있습니다. 이 글에서는 파이썬 클래스의 메소드와 속성에 대해 자세히 알아보고, 다양한 예시를 통해 이해를 돕겠습니다.
1. 클래스와 객체
- 클래스: 설계도와 같습니다. 객체를 생성하기 위한 템플릿 역할을 하며, 객체가 가질 속성과 행동을 정의합니다.
- 객체: 클래스를 바탕으로 생성된 실제 인스턴스입니다. 클래스에 정의된 속성과 메소드를 가지며, 각각 고유한 값을 가질 수 있습니다.
class Car:
def __init__(self, color, max_speed):
self.color = color
self.max_speed = max_speed
def drive(self):
print("자동차가 달립니다.")
위 코드에서 Car는 클래스이고, color, max_speed는 속성, drive는 메소드입니다.
2. 속성 (Attribute)
- 클래스 속성: 클래스 레벨에서 정의된 속성으로, 모든 객체가 공유하는 값을 가집니다. 클래스 이름으로 직접 접근합니다.
- 인스턴스 속성: 각 객체마다 고유한 값을 가지는 속성으로, self를 통해 접근합니다.
class Dog:
species = "Canis lupus familiaris" # 클래스 속성
def __init__(self, name, age):
self.name = name # 인스턴스 속성
self.age = age # 인스턴스 속성
3. 메소드 (Method)
- 인스턴스 메소드: 객체의 상태를 변경하거나 정보를 반환하는 메소드입니다. 첫 번째 인자로 항상 self를 받습니다.
- 클래스 메소드: 클래스 자체에 대한 작업을 수행하는 메소드입니다. @classmethod 데코레이터를 사용하여 정의합니다.
- 정적 메소드: 클래스나 객체의 상태와 무관하게 독립적으로 실행되는 메소드입니다. @staticmethod 데코레이터를 사용하여 정의합니다.
class Calculator:
def __init__(self, num1, num2):
self.num1 = num1
self.num2 = num2
def add(self): # 인스턴스 메소드
return self.num1 + self.num2
@classmethod
def create_from(cls, num): # 클래스 메소드
return cls(num, num)
@staticmethod
def is_positive(num): # 정적 메소드
return num > 0
728x90
4. 특별 메소드 (Magic Method)
- __init__: 객체 생성 시 호출되는 생성자 메소드입니다.
- __str__: 객체를 문자열로 변환할 때 호출되는 메소드입니다.
- __repr__: 객체의 공식적인 문자열 표현을 반환하는 메소드입니다.
- __eq__: 두 객체가 같은지 비교하는 메소드입니다.
- __len__: 객체의 길이를 반환하는 메소드입니다.
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return f"Person(name={self.name}, age={self.age})"
5. 상속 (Inheritance)
- 기존 클래스의 속성과 메소드를 상속받아 새로운 클래스를 정의하는 기능입니다.
- 코드 재사용성을 높이고, 계층적인 클래스 구조를 만들 수 있습니다.
class Animal:
def __init__(self, name):
self.name = name
def eat(self):
print("먹는다.")
class Dog(Animal):
def bark(self):
print("멍멍")
6. 다형성 (Polymorphism)
- 서로 다른 타입의 객체가 동일한 메소드를 가지고 있지만, 각자 다른 방식으로 동작하는 것을 의미합니다.
- 상속과 함께 사용하여 코드의 유연성을 높일 수 있습니다.
def make_sound(animal):
animal.make_sound()
dog = Dog("멍멍이")
cat = Cat("야옹이")
make_sound(dog) # 멍멍
make_sound(cat) # 야옹
결론
파이썬 클래스의 메소드와 속성은 객체지향 프로그래밍의 기본 개념입니다. 이를 잘 이해하고 활용하면 복잡한 문제를 효과적으로 해결하고 코드의 가독성과 재사용성을 높일 수 있습니다. 클래스 속성, 인스턴스 속성, 인스턴스 메소드, 클래스 메소드, 정적 메소드, 특별 메소드, 상속, 다형성 등 다양한 개념을 꾸준히 학습하고 실제 코드에 적용해 보세요.
728x90
728x90
'Python을 배워보자 > 6. 객체 지향 프로그래밍 (OOP)' 카테고리의 다른 글
파이썬 특별 메소드 생성자와 소멸자 (0) | 2024.09.25 |
---|---|
파이썬 상속 다형성 (0) | 2024.09.25 |
파이썬 부모 클래스와 자식 클래스 (0) | 2024.09.25 |
파이썬 클래스 정의, 객체 생성 (0) | 2024.09.25 |