Python

Page 139

__init__ 이란 무엇인가? 자, 이제 또 시간이 흘러 가입자 수가 많아지게 되었다. 더하기 해 주는 서비스는 너무 친절하게 서비스를 제공해 주기 때문이었다. 그런데 가끔 이런 문제가 발생한다고 항의 전화가 빗발치듯 들어온다. 그 사람들의 말을 들어보면 다음과 같은 것이다.

>>> babo = Service() >>> babo.sum(1, 1)

위와 같이 하면 babo.setname(“나바보”)와 같은 과정이 빠졌기 때문에 에러가 나는 것이라고 골백번 얘기를 하지만 항상 이런 실수를 하는 사람들로부터 항의 전화가 와서 서비스 업체에서는 여간 귀찮은 게 아니었다. 그래서 다음과 같은 아이디어를 떠올렸다. 지금까지는 사람들이 서비스 가입 시 바로 아이디를 주는 방식이었는데 아이디를 줄 때 그 사람의 이름을 입력받아야만 아이디를 주는 방식으로 바꾸면 babo.setname("나바보“)와 같은 과정을 생략할 수 있을 거란 생각이었다. 위와 같이 해주기 위한 방법을 찾던 중 서비스 업체의 실력자 한사람이 __init__이란 함수를 이용하자고 제의를 한다. 그 방법은 다음과 같았다.

>>> class Service: . . . secret = "영구는 배꼽이 두 개다" . . . def __init__(self, name): . . . self.name = name . . . def sum(self, a, b): . . . result = a + b . . . print "%s님 %s + %s = %s입니다." % (self.name, a, b, result) . . . >>>

위의 Service클래스를 이전의 클래스와 비교해 보면 바뀐 부분은 딱 한가지이다. 바로 setname함수의 이름인 setname이 __init__으로 바뀐 것이다. 클래스에서 이 __init__이란 함수는 특별한 의미를 갖는다. 의미는 다음과 같다. “인스턴스를 만들 때 항상 실행된다.” 즉, 아이디를 부여받을 때 항상 실행된다는 말이다. 따라서 이제는 위의 서비스에 가입을 하기 위해서 다음처럼 해야 한다.

>>> pey = Service(“홍길동”)

wikidocs.net PDF, page : 139


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.