내가 하고싶은 건 다 하는 공간

Python Object Oriented Programming(OOP) 파이썬 객체 지향 프로그래밍 클래스 객체 본문

파이썬

Python Object Oriented Programming(OOP) 파이썬 객체 지향 프로그래밍 클래스 객체

하고파 2025. 7. 6. 11:22

Object Oriented Programming(OOP) 객체 지향 프로그래밍

객체 개념을 프로그래밍으로 표현. 객체는 속성 Attribute행동 Action을 가집니다.

예를 들어 객체가 축구선수인 경우 속성은 선수 이름, 포지션, 소속 팀 등이 되고, 행동은 공을 찬다, 패스한다 등이 됩니다.

<-> 순차적 프로그래밍

 

클래스 Class

객체는 클래스 Class인스턴스 Instance로 설계도를 만듭니다. 예시로 축구 선수 정보를 Class로 구현해보겠습니다.

1. 클래스 선언하기

ⓒ 부스트코스 AI Tech 프리코스

명명법은 두 가지가 있는데, 먼저 snake_case는 띄어쓰기 부분에 "_"를 추가해서 명명합니다. 참고로 다른 명명법으로는 CamelCase가 있는데, 띄어쓰기 대신 대문자를 적어줍니다. 예를 들어 snake_case로는 "soccer_player"가 될 거고, CamelCase로는 "SoccerPlayer"가 됩니다. 보통 클래스명은 CamelCase, 함수명은 snake_case로 명명해줍니다.

class SoccerPlayer(object):
  pass

aaa = SoccerPlayer()
bbb = SoccerPlayer()
ccc = SoccerPlayer()

구조는 위와 같습니다. 참고로 aaa, bbb, ccc는 모두 다른 객체가 됩니다.

 

2. 속성 Attribute 추가하기: __init__, self

속성은 __init__, self로 구성됩니다. 먼저 __init은 객체 초기화 예약 함수로 속성에 관한 정보를 저장합니다. __init__의 파라미터로 여러 속성들을 넣어주고, self로 객체를 선언합니다. 예를 들어 self.name은 self라는 객체에 소속된 name이라는 속성을 뜻하고, self.name = name에서 오른쪽에 있는 name은 파라미터로 받은 값, 할당된 값을 의미합니다.

class SoccerPlayer(object):
  def __init__(self, name : str, position : str, back_number : int)
    self.name = name
    self.position = position
    self.back_number = back_number

이렇게 선언해주면 클래스 정보가 메모리에 올라가게 되므로 클래스를 자유자재로 사용할 수 있습니다. 이게 설계도가 되는데, 각 파라미터의 type을 명시해주면 좋습니다.

Magic Method

Magic Method인 __는 1) 특수한 예약함수 또는 2) 함수명을 자동으로 변경(맹글링)에 사용되며, 예로는 __main__, __str__ 등이 있습니다.

def __str__(self): # 문자열 출력 함수
	return "Hello, My name is %s. My back number is %d." %(self.name, self.back_number)
    
def __add__(self, other): # 덧셈 함수
  	return self.name + other.name

 

3. 행동 Action(Method) 구현하기: 함수로 구현

함수에 반드시 self를 추가해야 클래스 함수로 인정됩니다. 클래스 함수를 사용할 때에는 self명.함수명(파라미터) 형태로 이용합니다.

참고로 객체의 값을 변경할 때 단순히 son.back_number = 10으로 바꾸는 것보다 이렇게 함수를 만들어서 바꾸는 것이 좋다고 합니다.