본문 바로가기
코딩/파이썬

[Python] 파이썬 클래스 기본 개념과 기본 구조 (클래스 생성자, 클래스 변수, 클래스 상속, 클래스 다형성)

by zz! 2024. 1. 27.
728x90

프로그래밍 세계에서 파이썬 클래스는 마치 레고 블록과도 같습니다. 복잡한 구조물을 만들기 위해 기본 블록을 조립하는 것처럼, 파이썬에서도 클래스를 통해 강력하고 유연한 프로그램을 구축할 수 있습니다. 하지만 많은 초보 개발자들이 클래스의 개념을 이해하고 실제로 적용하는 방법까지, 쉽게 설명해 드리겠습니다.

 

[Python] 파이썬 클래스(class)란 (클래스 생성자, 클래스 변수, 클래스 상속, 클래스 다형성)

 

목차

1. 파이썬 클래스의 기본 개념

2. 파이썬 클래스 생성하기

3. 클래스 상속과 다형성

 

1. 파이썬 클래스의 기본 개념

이 목차에서는 파이썬의 클래스의 기본 개념과 객체의 개념, 클래스의 기본 구조, 메서드와 속성에 대해 알아보도록 하겠습니다.

1-1. 클래스(class)와 객체란?

클래스(class)는 데이터와 함수를 묶어서 하나의 새로운 타입을 정의하는 방법을 제공합니다. 이를 통해 코드의 재사용성을 높이고, 복잡한 문제를 관리하기 쉬운 단위로 나누어 해결할 수 있습니다.

객체(object)는 클래스로부터 생성되며, 이를 클래스의 인스턴스(Instance)라고 합니다.

클래스는 객체의 설계도와 같으며, 객체는 이 설계도를 바탕으로 만들어진 결과물이라고 할 수 있습니다.

 

1-2. 클래스(class)의 기본 구조

클래스는 속성과 메서드로 구성됩니다. 속성은 객체의 상태를 나타내는 변수이며, 메서드는 객체가 수행할 수 있는 행동을 정의한 함수입니다. 클래스 내부에서 정의된 이들은 객체가 생성될 때 함께 초기화되어 객체의 특징을 결정짓습니다.

아래는 클래스 내부에서 속성과 매서드를 정의하고, 객체가 생성될 때 초기화되는 예시 코드입니다.

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def bark(self):
        print(f"{self.name} is barking!")

# 객체 생성
my_dog = Dog("Buddy", 3)

# 객체의 속성과 메서드 사용
print(f"{my_dog.name} is {my_dog.age} years old.")
my_dog.bark()

이 코드에서 "Dog" 클래스는 개를 나타내고, "__init__" 메서드를 통해 개의 이름과 나이를 초기화합니다. 그리고 'bark' 메서드를 통해 개가 짖는 행동을 나타냅니다. 객체를 생성한 후에는 해당 객체의 속성과 메서드를 사용하여 정보를 출력하고 특정 행동을 수행합니다.

 

1-3. 메서드와 속성

메서드는 클래스 안에 구현된 함수라고 생각을 하시면 됩니다. 객체는 수행할 수 있는 동작을 포함합니다. 속성은 객체의 상태를 저장하는 변수로, 객체마다 독립적인 값을 가질 수 있습니다. 메서드 내에서는 self 키워드를 통해 해당 객체의 속성에 접근할 수 있습니다.

 

2. 파이썬 클래스 생성하기

이 목차에서는 기본 클래스 정의 및 객체 생성하기, 초기화 메서드 init 사용하기, 인스턴스 변수와 클래스 변수에 대해 알아보겠습니다.

2.1 기본 클래스 정의 및 객체 생성하기

클래스를 정의하기 위해서는 class 키워드를 사용하고, 객체는 클래스 이름 뒤에 괄호를 붙여 생성할 수 있습니다.

예를 들어, MyClass라는 클래스를 정의하고, 이를 바탕으로 객체를 생성하려면 다음과 같이 작성합니다.

MyClass라는 클래스를 정의

class MyClass:
	pass

이를 바탕으로 객체를 생성

my_object = MyClass()

 

 

2.2 초기화 메서드 init 사용하기

객체가 생성될 때 자동으로 호출되는 __init__ 메서드는 객체의 초기상태를 설정하는 데 사용됩니다. 이 메서드 내에서 객체의 속성을 초기화할 수 있으며, 필요한 경우 외부로부터 인자를 받아 객체를 구성할 수 있습니다.

 

2.3 인스턴스 변수와 클래스 변수

인스턴스 변수는 __init__ 메서드 내에서 self를 통해 정의되며, 각 객체마다 독립적인 값을 가집니다. 반면 클래스 변수는 클래스 정의 내에서 정의되며, 모든 객체에 대해 공유되는 값입니다.

클래스 변수와 인스턴스 변수의 차이는?

클래스 변수는 클래스에 속한 모든 인스턴스가 공유하는 변수이고, 인스턴스 변수는 각 인스턴스가 독립적으로 가지는 변수입니다.

class Example:
	# 클래스 변수
    class_variable = "I am a class variable"

    def __init__(self, instance_variable):
    	# 인스턴스 변수
        self.instance_variable = instance_variable

# 객체 생성
obj1 = Example("Instance 1")
obj2 = Example("Instance 2")

# 출력
print(obj1.class_variable)  # 클래스 변수 사용
print(obj2.class_variable)

print(obj1.instance_variable)  # 인스턴스 변수 사용
print(obj2.instance_variable)

# 클래스 변수 변경
Example.class_variable = "Updated class variable"

# 변경된 클래스 변수 확인
print(obj1.class_variable)
print(obj2.class_variable)

 

3. 클래스 상속과 다형성

이 목차에서는 상속의 개념과 필요성, 파이썬에서 상속 구현하기, 메서드 오버라이딩과 다형성에 대해 알아보겠습니다.

3.1 상속의 개념과 필요성

상속은 기존 클래스의 속성과 메서드를 새로운 클래스가 물려받는 것을 말합니다. 이를 통해 코드의 재사용성을 높이고, 중복을 줄여 프로그램의 구조를 개선할 수 있습니다.

3.2 파이썬에서 상속 구현하기

파이썬에서 상속을 구현하려면, 새로운 클래스 정의 시 괄호 안에 기반 클래스를 명시합니다. 예를 들어, BaseClass를 상속받는 DerivedClass를 만들고자 한다면 다음과 같이 작성합니다.

BaseClass라는 클래스를 정의

class BaseClass:
	pass

BaseClass라는 클래스를 상속받는 DerivedClass라는 클래스를 정의

class DerivedClass(BaseClass):
	pass

3.3 메서드 오버라이딩과 다형성

메서드 오버라이딩은 상속받은 메서드를 자식 클래스에서 재정의하는 것을 말합니다. 이를 통해 다형성을 실현할 수 있고, 동일한 인터페이스 아래에서 다른 동작을 구현할 수 있습니다.

 

이 글을 통해 파이썬 클래스의 기본 개념을 알아보았습니다. 이를 잘 이해하고 활용하는 것이 중요합니다. 지금까지 배운 내용을 바탕으로, 실제 프로젝트에 클래스를 적용해 보며 지속적으로 연습해 보시길 바랍니다. 여러분들에게 도움이 되는 "부상남"이 되겠습니다. 감사합니다.

728x90