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