TIL — 객체 지향 프로그래밍 (2)

이성보·2020년 11월 1일
0

python

목록 보기
5/7
post-thumbnail

참고 자료
https://www.py4e.com/lessons/servces
찰스 세브란스. 『데이터를 다루며 배우는 파이썬』. 인사이트, 2019.

첫 번째 파이썬 객체

키워드 class를 사용해서 각 객체를 구성하는 데이터와 코드를 정의합니다.
class 키워드는 클래스 이름을 포함하며, 속성(데이터)과 메서드(코드)가 포함된 코드 블록을 들여쓰면서 시작합니다.

class PartyAnimal:
   x = 0

   def party(self) :
     self.x = self.x + 1
     print("So far",self.x)

an = PartyAnimal()
an.party()
an.party()
an.party()
PartyAnimal.party(an)

# Code: https://www.py4e.com/code3/party2.py

메서드는 규칙에 따라 self라고 부르는 특별한 첫 번째 매개변수를 가지고 있습니다. class 키워드는 PartyAnimal 타입의 각 객체에 포함될 데이터와 코드를 지정하는 템플릿을 정의합니다. 비유하자면 클래스는 쿠키를 찍어내는 틀이며, 객체는 틀(클래스)로 찍어낸 쿠키입니다.

예제 코드를 보면 다음과 같은 코드가 먼저 실행되는 걸 볼 수 있습니다.

an = PartyAnimal()

이 코드는, 파이썬에게 PartyAnimal이란 이름으로 클래스의 객체(또는 인스턴스라고도 함)를 생성하라고 지시합니다.

각 PartyAnimal 객체/인스턴스는 그 내부에 변수 x와 party라는 이름의 메서드/함수를 포함합니다. 아래 코드는 메서드를 호출합니다.

an.party()

party 메서드가 호출되면 첫 번째 매개변수 self가 가리키는, PartyAnimal 객체의 특정 인스턴스의 party가 내부적으로 호출됩니다.
party 메서드 본문의 다음 줄을 보겠습니다.

self.x = self.x + 1

이 코드에서 마침표 연산자는 'self 내의 x'를 의미합니다. 그래서 party()가 호출 될 때마다 내부의 x값이 1씩 증가해서 그 값이 출력됩니다.

전역 함수와 클래스/객체 내의 메서드 호출을 구분하기 위해, an 객체 내의 party 메서드를 다른 방법으로 호출해 보겠습니다.

PartyAnimal.party(an)

여기서는 객체 포인터를 첫 번째 매개변수 self에 명시적으로 전달해서 클래스 내의 함수를 호출합니다. an.party()는 앞의 코드에 대한 축약 표현으로 볼 수 있습니다.

프로그램 실행 결과는 아래와 같습니다.

So far 1
So far 2
So far 3
So far 4

객체가 생선된 후, party 메서드가 4번 호출되는데, 이 때마다 an 객체 내부의 x값이 증가되어 출력됩니다.

0개의 댓글