클래스 구조: __init__ 생성자

Python의 객체 지향 프로그래밍

Alex Yarosh

Content Quality Analyst @ 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__() 메서드는 객체가 생성될 때마다 호출됩니다.
class Customer:
       def __init__(self, name):     
        self.name = name           # <--- .name 속성을 만들고 name 매개변수로 설정
        print("The __init__ method was called")

cust = Customer("Lara de Silva") #<--- __init__ 가 암묵적으로 호출됨 print(cust.name)
The __init__ method was called
Lara de Silva
Python의 객체 지향 프로그래밍
class Customer:
       def __init__(self, name, balance):  # <-- balance 매개변수 추가

self.name = name self.balance = balance # <-- balance 속성 추가 print("The __init__ method was called")
cust = Customer("Lara de Silva", 1000) # <-- __init__ 호출됨 print(cust.name) print(cust.balance)
The __init__ method was called
Lara de Silva
1000
Python의 객체 지향 프로그래밍
class Customer:
       def __init__(self, name, balance=0):  #<-- balance 기본값 설정

self.name = name self.balance = balance print("The __init__ method was called")
cust = Customer("Lara de Silva") # <-- balance를 명시하지 않음
print(cust.name) print(cust.balance) # <-- 속성은 어쨌든 생성됨
The __init__ method was called
Lara de Silva
0
Python의 객체 지향 프로그래밍

메서드에서 속성 정의

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

    def my_method2(self, attr2):        
        self.attr2 = attr2
        ...
obj = MyClass()
obj.my_method1(val1) # <-- attr1 생성
obj.my_method2(val2) # <-- attr2 생성

생성자에서 속성 정의

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

# 모든 속성이 생성됨 obj = MyClass(val1, val2)
  • 모든 속성을 한눈에 파악
  • 객체 생성 시 속성 생성
  • 더 사용하기 쉽고 유지보수 용이한 코드
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(kitty, attr):
       kitty.attr = attr
Python의 객체 지향 프로그래밍

모범 사례

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

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

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

Ayo berlatih!

Python의 객체 지향 프로그래밍

Preparing Video For Download...