ELITE HACKER bootcamp/Main.Web

파이썬 클래스의 모든 것

hy30nq 2024. 5. 18. 18:45
728x90

안녕하세요! 😊 오늘은 파이썬의 class에 대해 아주 상세하게 설명해드리려고 해요. 파이썬의 클래스는 객체 지향 프로그래밍(Object-Oriented Programming, OOP)의 핵심 개념 중 하나랍니다. 예제를 통해 차근차근 알아볼게요.

파이썬 클래스의 모든 것

1. 클래스란?

클래스는 객체를 생성하기 위한 틀(템플릿)이라고 할 수 있어요. 클래스는 속성과 메서드를 가질 수 있고, 이를 이용해 여러 개의 객체를 생성할 수 있어요.

2. 클래스 정의하기

클래스를 정의하려면 class 키워드를 사용해요. 간단한 예제로 살펴볼게요.

class Dog:
    # 클래스 속성
    species = "Canis familiaris"

    # 초기화 메서드 (생성자)
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # 인스턴스 메서드
    def description(self):
        return f"{self.name} is {self.age} years old"

    # 또 다른 인스턴스 메서드
    def speak(self, sound):
        return f"{self.name} says {sound}"

이렇게 클래스를 정의하면 Dog 클래스라는 틀이 만들어졌어요.

3. 객체 생성하기

클래스를 정의한 후에는 객체를 생성할 수 있어요. 객체는 클래스를 인스턴스화한 것이라고도 해요.

my_dog = Dog("Buddy", 3)
print(my_dog.description())  # "Buddy is 3 years old"
print(my_dog.speak("Woof Woof"))  # "Buddy says Woof Woof"

4. 클래스 속성과 인스턴스 속성

  • 클래스 속성: 클래스 자체에 속하는 속성으로, 모든 인스턴스가 공유해요.
  • 인스턴스 속성: 각 객체에 속하는 속성으로, 객체마다 별도로 저장돼요.
class Dog:
    species = "Canis familiaris"  # 클래스 속성

    def __init__(self, name, age):
        self.name = name  # 인스턴스 속성
        self.age = age    # 인스턴스 속성

5. 메서드

메서드는 클래스 내부에 정의된 함수예요. 메서드는 반드시 첫 번째 인자로 self를 받아야 해요. self는 현재 객체를 참조하는 변수랍니다.

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

    def description(self):
        return f"{self.name} is {self.age} years old"

6. 상속

클래스는 상속을 통해 다른 클래스의 속성과 메서드를 물려받을 수 있어요. 이를 통해 코드 재사용성을 높일 수 있답니다.

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

    def description(self):
        return f"{self.name} is {self.age} years old"

class Bulldog(Dog):
    def run(self, speed):
        return f"{self.name} runs {speed} km/h"
my_bulldog = Bulldog("Max", 5)
print(my_bulldog.description())  # "Max is 5 years old"
print(my_bulldog.run(10))  # "Max runs 10 km/h"

7. 메서드 오버라이딩

자식 클래스에서 부모 클래스의 메서드를 재정의(오버라이딩)할 수 있어요.

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

    def speak(self, sound="Woof"):
        return f"{self.name} says {sound}"

class Bulldog(Dog):
    def speak(self, sound="Grrr"):
        return f"{self.name} says {sound}"
my_dog = Dog("Buddy", 3)
print(my_dog.speak())  # "Buddy says Woof"

my_bulldog = Bulldog("Max", 5)
print(my_bulldog.speak())  # "Max says Grrr"

8. 클래스 변수와 인스턴스 변수의 차이

  • 클래스 변수: 모든 인스턴스가 공유하는 변수
  • 인스턴스 변수: 각 인스턴스가 독립적으로 가지는 변수
class Dog:
    species = "Canis familiaris"  # 클래스 변수

    def __init__(self, name, age):
        self.name = name  # 인스턴스 변수
        self.age = age    # 인스턴스 변수
dog1 = Dog("Buddy", 3)
dog2 = Dog("Max", 5)

print(dog1.species)  # "Canis familiaris"
print(dog2.species)  # "Canis familiaris"

print(dog1.name)  # "Buddy"
print(dog2.name)  # "Max"

9. 클래스 메서드와 정적 메서드

  • 클래스 메서드: 클래스 자체를 첫 번째 인자로 받는 메서드
  • 정적 메서드: 클래스나 인스턴스와 무관하게 동작하는 메서드
class Dog:
    species = "Canis familiaris"  # 클래스 변수

    def __init__(self, name, age):
        self.name = name  # 인스턴스 변수
        self.age = age    # 인스턴스 변수

    @classmethod
    def get_species(cls):
        return cls.species

    @staticmethod
    def bark():
        return "Woof Woof"
print(Dog.get_species())  # "Canis familiaris"
print(Dog.bark())  # "Woof Woof"

이렇게 파이썬의 클래스에 대해 상세히 알아보았어요. 클래스는 객체 지향 프로그래밍의 중요한 개념이니, 이해하고 활용하는 데 도움이 되셨길 바랄게요. 궁금한 점이 있으면 언제든지 물어보세요! 😊

 

 

728x90