[파이썬] 클래스와 객체의 차이점

클래스와 객체는 객체 지향 프로그래밍에서 중요한 개념입니다. 이 둘은 서로 연결되어 있지만, 목적과 특징에서 차이가 있습니다. 이번 글에서는 파이썬에서 클래스와 객체의 차이점을 살펴보겠습니다.

클래스란?

클래스는 객체를 정의하기 위한 템플릿입니다. 클래스는 객체의 상태와 동작을 포함하는 변수와 메서드의 집합으로 구성됩니다. 이 클래스를 바탕으로 여러 개의 객체를 생성할 수 있습니다.

예를 들어, ‘사람’이라는 개념을 클래스로 정의하면 사람의 이름, 나이, 성별 등의 상태 정보와 ‘인사하다’, ‘먹다’, ‘잠자다’ 등의 동작을 메서드로 정의할 수 있습니다. 이 클래스를 토대로 실제로 존재하는 사람들을 나타내는 개별 객체를 생성할 수 있습니다.

객체란?

객체는 클래스의 인스턴스입니다. 클래스를 통해 정의된 속성과 동작을 가지며, 메모리에 할당되어 실체화됩니다. 객체는 클래스의 구조에 따라 다양한 상태와 동작을 가지게 됩니다.

이전의 ‘사람’ 클래스를 예로 들면, 객체는 실제로 존재하는 각각의 사람을 나타내게 됩니다. 예를 들어 ‘John’이라는 객체는 ‘이름’이라는 속성을 가지고 있으며, ‘인사하다’라는 동작을 실행할 수 있습니다. 다른 객체 ‘Mary’도 마찬가지로 ‘이름’ 속성과 ‘인사하다’ 동작을 가지고 있을 수 있습니다.

클래스와 객체의 관계

클래스와 객체는 상호작용하면서 프로그램의 구조를 형성합니다. 클래스는 객체를 정의하기 위한 템플릿이며, 객체는 클래스의 인스턴스로서 실체화됩니다. 이를테면, ‘사람’ 클래스는 ‘John’이라는 객체와 ‘Mary’라는 객체를 생성하여 각각의 속성과 동작을 가질 수 있도록 합니다.

클래스와 객체는 프로그래밍의 모듈성, 재사용성, 유지보수성을 높이는데 도움을 줍니다. 클래스를 정의하여 객체를 생성하면, 코드를 재사용할 수 있고 객체마다 다른 속성을 가질 수 있습니다.

예제 코드

이제 파이썬을 사용하여 클래스와 객체의 차이점을 보여주는 간단한 예제 코드를 살펴보겠습니다.

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def greet(self):
        print(f"안녕하세요! 저는 {self.name}입니다.")
    
person1 = Person("John", 25)
person2 = Person("Mary", 30)

person1.greet()
person2.greet()

위의 코드에서는 ‘Person’ 클래스를 정의하고, ‘name’과 ‘age’라는 속성과 ‘greet’라는 메서드를 가지고 있습니다. 이 클래스를 바탕으로 ‘person1’과 ‘person2’라는 개별 객체를 생성하여 각각의 속성과 동작을 확인할 수 있습니다.

위의 예제 코드를 실행하면 다음과 같은 출력이 나타날 것입니다.

안녕하세요! 저는 John입니다.
안녕하세요! 저는 Mary입니다.

이런식으로 클래스와 객체를 사용하여 여러 개의 객체를 생성하고, 각 객체별로 다른 속성과 동작을 가질 수 있습니다. 이는 객체 지향 프로그래밍의 핵심 개념 중 하나입니다.

마무리

이 글에서는 클래스와 객체의 차이점을 파이썬을 통해 설명했습니다. 클래스는 객체의 템플릿이며, 객체는 클래스의 인스턴스로서 실체화됩니다. 클래스와 객체를 잘 이해하고 사용하면 코드의 모듈성과 재사용성을 높일 수 있습니다.