반응형
파이썬 클래스에 대해 각 요소들에 대해 상세히 설명하겠습니다.
1. 클래스와 객체:
- 클래스는 객체를 생성하기 위한 틀 또는 설계도입니다. 객체는 클래스를 기반으로 실제로 생성된 인스턴스입니다. 클래스는 객체의 속성(변수)과 동작(메서드)을 정의하며, 객체는 이러한 속성과 동작을 가지고 있습니다.
class Dog:
# 클래스 변수
species = 'mammal'
# 생성자
def __init__(self, name, age):
# 인스턴스 변수
self.name = name
self.age = age
# 메서드
def bark(self):
return "Woof!"
2. 클래스 구조:
클래스는 다음과 같은 요소들로 구성됩니다.
- 클래스 변수: 클래스 내에서 공유되는 변수로, 모든 객체가 동일한 값을 가집니다.
- 생성자(__init__ 메서드): 객체를 생성하고 초기화하는 역할을 수행합니다. 인스턴스 변수를 초기화합니다.
- 인스턴스 변수: 객체(인스턴스)마다 독립적으로 가지고 있는 변수로, 객체의 속성을 나타냅니다.
- 메서드: 클래스 내에서 정의된 함수로, 객체의 동작을 정의합니다.
3. 클래스 연산:
- 클래스는 객체를 생성하고, 객체의 속성과 동작을 정의하여 객체들이 원하는 동작을 수행하도록 합니다.
# 클래스를 기반으로 객체 생성
dog1 = Dog("Buddy", 3)
dog2 = Dog("Daisy", 2)
# 객체의 속성에 접근
print(dog1.name) # 출력: "Buddy"
print(dog2.age) # 출력: 2
# 객체의 메서드 호출
print(dog1.bark()) # 출력: "Woof!"
4. 생성자 (__init__ 메서드):
- 생성자는 객체를 생성하고 초기화하는 메서드로, 클래스가 인스턴스화될 때 자동으로 호출됩니다. 인스턴스 변수를 초기화하는 역할을 수행합니다.
class Student:
def __init__(self, name, age, major):
self.name = name
self.age = age
self.major = major
# 객체 생성과 동시에 초기화
student1 = Student("Alice", 25, "Computer Science")
student2 = Student("Bob", 22, "Mathematics")
5. 상속:
- 상속은 기존 클래스를 기반으로 새로운 클래스를 만드는 기능입니다. 상속을 받은 클래스는 기존 클래스의 속성과 동작을 모두 물려받습니다.
class Animal:
def __init__(self, species):
self.species = species
def make_sound(self):
pass
class Dog(Animal):
def make_sound(self):
return "Woof!"
class Cat(Animal):
def make_sound(self):
return "Meow!"
dog = Dog("Mammal")
cat = Cat("Mammal")
print(dog.make_sound()) # 출력: "Woof!"
print(cat.make_sound()) # 출력: "Meow!"
6. 클래스 변수와 인스턴스 변수:
- 클래스 변수는 클래스 자체에 속하며, 모든 객체가 공유합니다. 인스턴스 변수는 객체마다 독립적으로 속하며, 객체의 속성을 나타냅니다.
class Counter:
count = 0 # 클래스 변수
def __init__(self):
Counter.count += 1 # 객체 생성 시 클래스 변수 증가
def get_count(self):
return Counter.count # 클래스 변수 반환
c1 = Counter()
c2 = Counter()
print(c1.get_count()) # 출력: 2
print(c2.get_count()) # 출력: 2
파이썬 클래스를 잘 이해하고 활용하면 객체 지향 프로그래밍의 장점을 최대한 활용할 수 있습니다. 상속을 통해 코드 재사용을 높이고, 클래스 변수와 인스턴스 변수를 적절히 사용하여 객체들이 원하는 동작을 수행하도록 설계하는 것이 좋습니다.
반응형
'Python > 파이썬 기초' 카테고리의 다른 글
파이썬 패키지 (packages) (0) | 2023.07.30 |
---|---|
파이썬 모듈 (module) (0) | 2023.07.30 |
파이썬 파일 읽기 쓰기 (0) | 2023.07.29 |
파이썬 내장 함수 (enumerate, map, filter, all, any, isinstance) (0) | 2023.07.28 |
파이썬 내장 함수 (range, min, max, sum, sorted, zip) (0) | 2023.07.28 |