<개인공부>/[Python]

[Python] 파이썬 클래스 초보자 가이드 (__init__, self)

BlockDMask 2025. 4. 1. 08:51
반응형

안녕하세요. BlockDMask 입니다.

오늘은 파이썬의 클래스(class)와 그 안에서 자주 쓰이는 __init__, self 키워드에 대해 알아보겠습니다.

클래스는 객체지향 프로그래밍의 핵심이며,
처음 파이썬을 배우는 분들에게는 살짝 낯설 수 있지만,
한 번 익히면 코드를 더 구조적으로 짤 수 있게 됩니다.



1. 클래스란?

간단히 말해서, 클래스는 설계도이고, 객체는 실제 만들어진 물건입니다.

예를 들어, 사람이라는 클래스를 만들면,
이 클래스는 이름(name), 나이(age) 같은 속성(변수)과 인사하기 같은 동작(함수)을 가질 수 있습니다.



2. 가장 기본적인 클래스 예제

class Person:
    def say_hello(self):
        print("안녕하세요!")
        
p = Person()
p.say_hello()

출력:
안녕하세요!

  • p = Person() → 클래스를 이용해 객체(인스턴스)를 생성
  • self는 해당 인스턴스 자신을 의미합니다.



3. __init__ 함수란?

클래스를 기반으로 객체가 생성될 때 자동으로 호출되는 함수입니다.
즉, 객체 초기화(셋팅)를 위한 함수입니다.

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

    def introduce(self):
        print(f"저는 {self.name}이고, {self.age}살입니다.")
        
p1 = Person("BlockDMask", 30)
p1.introduce()

출력:
저는 BlockDMask이고, 30살입니다.



4. self란 무엇인가?

self는 해당 객체 자신을 가리킵니다.
다른 언어의 this 키워드와 비슷한 역할입니다.

class Cat:
    def speak(self):
        print("self는 누구인가?", self)

c = Cat()
print("인스턴스:", c)
c.speak()

출력:

인스턴스: <__main__.Cat object at 0x...>
self는 누구인가? <__main__.Cat object at 0x...>

self는 메서드 호출 시 자동으로 인스턴스 자신이 전달된다는 걸 알 수 있습니다.



5. 여러 객체를 만들어서 비교해보기

p1 = Person("Alice", 25)
p2 = Person("Bob", 32)

p1.introduce()
p2.introduce()

출력:

저는 Alice이고, 25살입니다.
저는 Bob이고, 32살입니다.

각각의 객체는 독립적인 속성을 가집니다.



6. 클래스에 기본값 지정하기

class Dog:
    def __init__(self, name="이름 없음"):
        self.name = name

    def bark(self):
        print(f"{self.name}가 멍멍 짖어요!")

d1 = Dog()
d2 = Dog("초코")

d1.bark()
d2.bark()

출력:

이름 없음가 멍멍 짖어요!
초코가 멍멍 짖어요!

생성자에 기본값을 넣으면 더 유연하게 사용할 수 있습니다.



7. 클래스를 활용한 실전 예제 - 은행 계좌 만들기

class BankAccount:
    def __init__(self, owner, balance=0):
        self.owner = owner
        self.balance = balance

    def deposit(self, amount):
        self.balance += amount
        print(f"{amount}원이 입금되었습니다. 잔액: {self.balance}원")

    def withdraw(self, amount):
        if amount > self.balance:
            print("잔액이 부족합니다.")
        else:
            self.balance -= amount
            print(f"{amount}원이 출금되었습니다. 잔액: {self.balance}원")

acc = BankAccount("BlockDMask", 10000)
acc.deposit(5000)
acc.withdraw(3000)
acc.withdraw(20000)

출력:

5000원이 입금되었습니다. 잔액: 15000원
3000원이 출금되었습니다. 잔액: 12000원
잔액이 부족합니다.

이처럼 실생활 개념을 클래스화하면 매우 직관적인 구조가 됩니다.



8. 결론

  • 클래스는 관련된 데이터와 기능을 묶어서 표현하는 단위입니다.
  • __init__은 객체 생성 시 자동 실행되는 초기화 함수입니다.
  • self는 인스턴스 자신을 참조합니다.
  • 실전 예제처럼 클래스는 현실 세계의 구조를 코드로 잘 표현할 수 있게 해줍니다.



이상, 파이썬 클래스 초보자 가이드 (__init__, self)에 대해 정리해보았습니다.
오늘도 읽어주셔서 감사합니다.

반응형