파이썬으로 클래스 정의하는 방법

파이썬으로 클래스 정의하는 방법

Python
파이썬으로 클래스 정의하는 방법
Author

gabriel yang

Published

October 3, 2024


파이썬에서 클래스는 객체 지향 프로그래밍(OOP)의 핵심 개념 중 하나로, 코드의 재사용성과 구조화를 돕는 중요한 도구입니다. 이번 글에서는 파이썬으로 클래스를 정의하는 방법을 단계별로 설명하겠습니다. 클래스 정의의 기본 문법부터 생성자 메서드(__init__), 그리고 클래스와 인스턴스의 차이까지 다룹니다.

1. 클래스 정의 문법

클래스는 여러 객체를 생성할 수 있는 템플릿 역할을 합니다. 클래스는 class 키워드를 사용하여 정의하며, 그 안에 속성(변수)과 메서드(함수)를 정의할 수 있습니다.

기본 클래스 정의 문법

class MyClass:
    # 클래스 속성
    class_variable = 'Hello, World!'

    # 메서드 (함수)
    def greet(self):
        return self.class_variable
  • class: 클래스 선언에 사용되는 키워드입니다.
  • MyClass: 클래스의 이름입니다. 클래스 이름은 보통 대문자로 시작하는 명명 규칙을 따릅니다.
  • 클래스 속성: class_variable과 같은 변수를 클래스 안에 선언하여, 클래스에 속한 모든 객체가 공유할 수 있는 값을 정의할 수 있습니다.
  • 메서드: 클래스 내에서 정의된 함수는 메서드라고 부릅니다. 위 예시에서는 greet라는 메서드를 통해 클래스 속성에 접근하고 있습니다.

클래스 인스턴스 생성

클래스는 객체를 생성하기 위한 템플릿이므로, 실제로 사용하기 위해서는 인스턴스(객체)를 생성해야 합니다. 인스턴스를 생성하려면 클래스 이름을 호출하면 됩니다.

# MyClass의 인스턴스 생성
my_instance = MyClass()

# 인스턴스에서 메서드 호출
print(my_instance.greet())  # 출력: Hello, World!
Hello, World!

2. __init__ 메서드 (생성자)

클래스에서 가장 중요한 메서드 중 하나는 바로 생성자__init__ 메서드입니다. __init__ 메서드는 객체가 생성될 때 자동으로 호출되며, 객체의 초기 상태를 설정하는 역할을 합니다.

__init__ 메서드 예제

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

    def introduce(self):
        return f"My name is {self.name} and I am {self.age} years old."
  • __init__(self, name, age): 생성자로, 객체가 생성될 때 호출됩니다. 이 메서드의 self는 생성된 인스턴스를 가리키며, nameage는 인스턴스의 초기 값을 설정하는 데 사용됩니다.
  • self.name, self.age: 각각 인스턴스 속성으로 설정됩니다. 이렇게 하면 인스턴스마다 다른 값을 가질 수 있습니다.

객체 생성 및 사용

person1 = Person('Alice', 30)
person2 = Person('Bob', 25)

# 각 인스턴스의 메서드 호출
print(person1.introduce())  # 출력: My name is Alice and I am 30 years old.
print(person2.introduce())  # 출력: My name is Bob and I am 25 years old.
My name is Alice and I am 30 years old.
My name is Bob and I am 25 years old.

__init__ 메서드를 사용하면 객체가 생성될 때 다양한 데이터를 초기화할 수 있어 매우 유용합니다.

3. 클래스와 인스턴스의 차이

클래스와 인스턴스는 객체 지향 프로그래밍의 중요한 개념입니다. 둘의 차이를 이해하는 것이 클래스 사용의 핵심입니다.

클래스

  • 클래스는 객체를 생성하기 위한 청사진입니다. 클래스 자체는 객체가 아니며, 객체를 정의하는 틀입니다.
  • 예를 들어 Person은 클래스이며, 사람 객체를 생성하기 위한 구조를 정의한 것입니다.
class Person:
    pass  # 빈 클래스

인스턴스

  • 인스턴스는 클래스에 의해 생성된 실제 객체입니다. 각 인스턴스는 고유한 데이터를 가질 수 있지만, 같은 클래스에서 생성된 여러 인스턴스는 같은 구조를 공유합니다.
  • 예를 들어, person1person2는 각각 Person 클래스의 인스턴스입니다.
person1 = Person()
person2 = Person()

클래스 속성과 인스턴스 속성의 차이

  • 클래스 속성: 클래스 자체에 속하며, 모든 인스턴스가 공유합니다.
  • 인스턴스 속성: 각 인스턴스에 속하며, 인스턴스마다 다르게 가질 수 있습니다.
class Dog:
    species = "Canine"  # 클래스 속성

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

# 인스턴스 생성
dog1 = Dog('Buddy')
dog2 = Dog('Charlie')

print(dog1.species)  # 출력: Canine
print(dog2.species)  # 출력: Canine

print(dog1.name)  # 출력: Buddy
print(dog2.name)  # 출력: Charlie
Canine
Canine
Buddy
Charlie

이 예시에서 species는 클래스 속성으로 모든 개가 “Canine”이라는 종에 속하지만, 각 개의 이름(name)은 다르게 설정됩니다.

결론

파이썬에서 클래스를 정의하는 것은 객체 지향 프로그래밍을 배우고 활용하는 첫걸음입니다. 클래스를 정의하고, 인스턴스를 생성하며, __init__ 메서드를 사용해 인스턴스마다 고유한 데이터를 설정할 수 있습니다. 또한 클래스와 인스턴스의 차이를 이해하면 파이썬에서 객체를 다루는 방법을 보다 명확히 알 수 있습니다.