class MyClass:
# 클래스 속성
= 'Hello, World!'
class_variable
# 메서드 (함수)
def greet(self):
return self.class_variable
파이썬으로 클래스 정의하는 방법
파이썬으로 클래스 정의하는 방법
파이썬에서 클래스는 객체 지향 프로그래밍(OOP)의 핵심 개념 중 하나로, 코드의 재사용성과 구조화를 돕는 중요한 도구입니다. 이번 글에서는 파이썬으로 클래스를 정의하는 방법을 단계별로 설명하겠습니다. 클래스 정의의 기본 문법부터 생성자 메서드(__init__
), 그리고 클래스와 인스턴스의 차이까지 다룹니다.
1. 클래스 정의 문법
클래스는 여러 객체를 생성할 수 있는 템플릿 역할을 합니다. 클래스는 class
키워드를 사용하여 정의하며, 그 안에 속성(변수)과 메서드(함수)를 정의할 수 있습니다.
기본 클래스 정의 문법
class
: 클래스 선언에 사용되는 키워드입니다.MyClass
: 클래스의 이름입니다. 클래스 이름은 보통 대문자로 시작하는 명명 규칙을 따릅니다.- 클래스 속성:
class_variable
과 같은 변수를 클래스 안에 선언하여, 클래스에 속한 모든 객체가 공유할 수 있는 값을 정의할 수 있습니다. - 메서드: 클래스 내에서 정의된 함수는 메서드라고 부릅니다. 위 예시에서는
greet
라는 메서드를 통해 클래스 속성에 접근하고 있습니다.
클래스 인스턴스 생성
클래스는 객체를 생성하기 위한 템플릿이므로, 실제로 사용하기 위해서는 인스턴스(객체)를 생성해야 합니다. 인스턴스를 생성하려면 클래스 이름을 호출하면 됩니다.
# MyClass의 인스턴스 생성
= MyClass()
my_instance
# 인스턴스에서 메서드 호출
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
는 생성된 인스턴스를 가리키며,name
과age
는 인스턴스의 초기 값을 설정하는 데 사용됩니다.self.name
,self.age
: 각각 인스턴스 속성으로 설정됩니다. 이렇게 하면 인스턴스마다 다른 값을 가질 수 있습니다.
객체 생성 및 사용
= Person('Alice', 30)
person1 = Person('Bob', 25)
person2
# 각 인스턴스의 메서드 호출
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 # 빈 클래스
인스턴스
- 인스턴스는 클래스에 의해 생성된 실제 객체입니다. 각 인스턴스는 고유한 데이터를 가질 수 있지만, 같은 클래스에서 생성된 여러 인스턴스는 같은 구조를 공유합니다.
- 예를 들어,
person1
과person2
는 각각Person
클래스의 인스턴스입니다.
= Person()
person1 = Person() person2
클래스 속성과 인스턴스 속성의 차이
- 클래스 속성: 클래스 자체에 속하며, 모든 인스턴스가 공유합니다.
- 인스턴스 속성: 각 인스턴스에 속하며, 인스턴스마다 다르게 가질 수 있습니다.
class Dog:
= "Canine" # 클래스 속성
species
def __init__(self, name):
self.name = name # 인스턴스 속성
# 인스턴스 생성
= Dog('Buddy')
dog1 = Dog('Charlie')
dog2
print(dog1.species) # 출력: Canine
print(dog2.species) # 출력: Canine
print(dog1.name) # 출력: Buddy
print(dog2.name) # 출력: Charlie
Canine
Canine
Buddy
Charlie
이 예시에서 species
는 클래스 속성으로 모든 개가 “Canine”이라는 종에 속하지만, 각 개의 이름(name
)은 다르게 설정됩니다.
결론
파이썬에서 클래스를 정의하는 것은 객체 지향 프로그래밍을 배우고 활용하는 첫걸음입니다. 클래스를 정의하고, 인스턴스를 생성하며, __init__
메서드를 사용해 인스턴스마다 고유한 데이터를 설정할 수 있습니다. 또한 클래스와 인스턴스의 차이를 이해하면 파이썬에서 객체를 다루는 방법을 보다 명확히 알 수 있습니다.