객체 지향 프로그래밍의 세계에 온 여러분, 환영합니다.
이전까지 Basics 강좌에서 사용한 코드들은 절차 지향이라고 부르는 패러다임입니다.
절차지향 패러다임은 코드를 위에서부터 아래로, 순차적으로 진행하는 방식입니다.
이번에 배울 객체 지향 패러다임은, 절차 지향 패러다임에 '객체' 의 개념을 도입한 패러다임입니다.
프로그래밍에서 필요한 데이터를 추상화해, 상태와 행위를 가진 객체를 만들고
그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다.
객체 지향 프로그래밍에서, 클래스와 인스턴스(객체) 라는 개념이 존재합니다.
인스턴스는 붕어빵, 클래스는 인스턴스를 찍어내는 붕어빵 틀에 비유할 수 있습니다.
클래스는 문제를 해결하기 위한 데이터를 만들기 위해,
추상화를 거쳐 집단에 속하는 속성(attribute)과 행위(behavior)를 변수와 메서드로 정의한 것입니다.
인스턴스는 클래스에서 정의한 것을 토대로 실제 메모리상에 할당된 것으로 실제 프로그램에서 사용되는 데이터입니다.
파이썬에서 클래스를 생성할 때, class
라는 키워드를 사용합니다.
클래스 내부에 선언하는 함수들을 메소드
라고 부르며, 관례적으로 첫 번째 파라미터에 self
를 사용합니다.
class MyClass:
def method(self):
print('Hello!')
객체를 생성할 때에는, 아래와 같이 클래스를 호출해 변수에 할당합니다.
instance = MyClass()
self
, 혹은 첫 번째에 위치하는 파라미터에는 이 클래스의 객체 자신이 전달됩니다.
실제 호출시에 self 파라미터는 전달하지 않습니다.
instance.method()
클래스의 객체를 생성하는 과정을 재정의하려면, __init__
이라는 생성자 메소드를 사용합니다.
class Person:
def __init__(self, name, age): # 여기서 정의한 파라미터들은 객체 생성시 전달해야 합니다.
"""
클래스의 생성자입니다.
"""
self.name = name # 클래스의 속성(attribute) 를 정의할 때, self.(속성 이름) = (값) 처럼 사용합니다.
self.age = age
def greeting(self):
print('안녕하세요,', self.name) # 앞서 정의한 속성값을 사용할 때, self.(속성 이름) 으로 사용합니다.
def grow(self):
self.age += 1 # 클래스의 속성값은 다시 할당할 수 있습니다.
person = Person('홍길동', 22) # __init__ 에서 정의한 파라미터들을 전달합니다.
person.greeting()
강의의 내용을 준비하며, 아래 글들이 많은 도움이 되었습니다.