클래스 구조: __init__ 생성자

Python 객체 지향 프로그래밍 입문

George Boorman

Curriculum Manager, DataCamp

메서드와 속성

  • 메서드는 클래스 내부의 함수 정의입니다
  • 첫 번째 인자는 self입니다
  • 할당으로 속성 정의
  • 클래스에서 속성은 self.___로 참조
  • 메서드가 많아지면 유지보수가 어려워질 수 있습니다!
class MyClass:
    # 클래스의 함수 정의
    # 첫 번째 인자는 self
    def my_method1(self, other_args...):
        # 여기에서 작업 수행

def my_method2(self, my_attr): # 할당으로 속성 생성 self.my_attr = my_attr ...
Python 객체 지향 프로그래밍 입문

생성자

  • 객체 생성 시 데이터를 함께 추가
  • 생성자 __init__()는 객체가 생성될 때마다 호출됩니다
    • __methodname__ 문법으로 자동 호출됨
class Customer:
    def __init__(self, name):
        # .name 속성을 만들고 name 매개변수로 설정
        self.name = name
        print("The __init__ method was called")
Python 객체 지향 프로그래밍 입문

생성자

# __init__는 암묵적으로 호출됨
cust = Customer("Lara de Silva")   
print(cust.name)
The __init__ method was called
Lara de Silva
Python 객체 지향 프로그래밍 입문

메서드에서 속성 정의

class MyClass:
    def my_method1(self, attr1):
        self.attr1 = attr1
        ...

    def my_method2(self, attr2):        
        self.attr2 = attr2
        ...

obj = MyClass() # attr1 생성 obj.my_method1(val1) # attr2 생성 obj.my_method2(val2)

생성자에서 속성 정의

class MyClass:
    def __init__(self, attr1, attr2):
        self.attr1 = attr1
        self.attr2 = attr2
        ...

# 모든 속성이 생성됨 obj = MyClass(val1, val2)
  • 일반적으로 생성자를 사용합니다
  • 객체 생성 시 속성이 함께 생성됩니다
  • 더 사용하기 쉽고 유지보수하기 좋습니다
Python 객체 지향 프로그래밍 입문

인자 추가

class Customer:
    # balance 인자 추가
    def __init__(self, name, balance): 

self.name = name # balance 속성 추가 self.balance = balance print("The __init__ method was called")
Python 객체 지향 프로그래밍 입문

매개변수 추가

# __init__가 호출됨
cust = Customer("Lara de Silva", 1000)
print(cust.name)
print(cust.balance)
The __init__ method was called
Lara de Silva
1000
Python 객체 지향 프로그래밍 입문

기본 인자

class Customer:
    # balance 기본값 설정
    def __init__(self, name, balance=0):
        self.name = name
        # 새 속성 할당
        self.balance = balance
        print("The __init__ method was called")
Python 객체 지향 프로그래밍 입문

기본 인자

# balance를 명시하지 않음
cust = Customer("Lara de Silva")

print(cust.name) # balance 속성은 어쨌든 생성됨 print(cust.balance)
The __init__ method was called
Lara de Silva
0
Python 객체 지향 프로그래밍 입문

모범 사례

1. __init__()에서 속성 초기화
Python 객체 지향 프로그래밍 입문

모범 사례

1. __init__()에서 속성 초기화
2. 명명 규칙

클래스는 CamelCase, 함수·속성은 lower_snake_case

Python 객체 지향 프로그래밍 입문

모범 사례

1. __init__()에서 속성 초기화
2. 명명 규칙

클래스는 CamelCase, 함수·속성은 lower_snake_case

3. selfself로 유지
class MyClass:
    # 동작하지만 권장하지 않음
    def my_method(george, attr):
        george.attr = attr
Python 객체 지향 프로그래밍 입문

모범 사례

1. __init__()에서 속성 초기화
2. 명명 규칙

클래스는 CamelCase, 함수·속성은 lower_snake_case

3. selfself
4. 독스트링 사용
class MyClass:
    """이 클래스는 아무 것도 하지 않습니다"""
    pass
Python 객체 지향 프로그래밍 입문

연습해 봅시다!

Python 객체 지향 프로그래밍 입문

Preparing Video For Download...