본문 바로가기
Python/파이썬 기초

파이썬 클래스 (Class)

by PySun 2023. 7. 29.
반응형

 
파이썬 클래스에 대해 각 요소들에 대해 상세히 설명하겠습니다.

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

파이썬 클래스를 잘 이해하고 활용하면 객체 지향 프로그래밍의 장점을 최대한 활용할 수 있습니다. 상속을 통해 코드 재사용을 높이고, 클래스 변수와 인스턴스 변수를 적절히 사용하여 객체들이 원하는 동작을 수행하도록 설계하는 것이 좋습니다.
 

반응형