
함수와 변수로 구성되는 클래스는 아래와 같은 형태로 생성하게 됩니다.
class 클래스이름:
def __init__(self):
self.변수명 = 변수값
def 함수명(self, 인자값 변수명, ...):
실행할 코드
def 함수명(self, 인자값 변수명, ...):
실행할 코드
○ 생성자
위 클래스에서 처음 등장하는 함수인 __init__은 예상했다시피 '생성자'의 역할을 합니다. 클래스 변수가 생성될 때 자동으로 호출되는 함수인데, 클래스 내부에 정의된 변수 등을 초기화 할 때 사용하게 됩니다. 역할 자체는 다른 언어의 생성자와 동일하게 생각하면 됩니다.
아래 예제를 보겠습니다.
class SimpleTest:
def __init__(self):
self.my_data = 100
print('Call Init')
simple = SimpleTest()
print(simple.my_data)
'''
출력
Call Init
100
'''
SimpleTest 클래스의 인스턴스를 생성하면서 즉시 생성자가 실행되면서 my_data라는 변수가 생성되었음을 확인할 수 있습니다.
○ self의 역할
JAVA와 같은 언어와 약간의 차이가 발생하는 지점이 self입니다. 사실 역할은 비슷한데, 사용법이 다소 차이가 있다고 이해하시면 좋습니다.
self는 this와 비슷한 역할을 하면서, self를 통해서 해당 변수를 클래스의 변수로 선언하는 역할을 하게 됩니다. 즉, 함수에서 변수를 선언할 때 self를 사용하지 않으면 해당 함수 내에서만 유효한 변수로 선언되며, self를 통해 선언하게 되면 해당 클래스의 변수로 선언되는 것입니다(다른 언어에서 변수를 별도로 선언하는 것과 차이가 여기서 발생하죠)
그래서 위 생성자 예제에서 my_data를 선언할 때 self를 빼고 선언하게되면, 실행 과정에서 simple.my_data를 프린트하면서 오류가 발생하게 됩니다. my_data는 생성자 함수 내에서만 유효하니까요.
self를 사용해서 my_data를 선언했기 때문에, 이 변수는 인스턴스별로 생성되는 변수가 됩니다. 그래서 simple2.my_data, simple3.my_data...와 같은 인스턴스 별 변수로 사용이 가능해지는 것입니다.
다음 응용 예제를 살펴보겠습니다.
class SimpleTest:
def print_skip(self, string):
if 'skip' in string:
print('S-K-I-P')
return
print(string)
simple = SimpleTest()
simple.print_skip('NEW NEW')
simple.print_skip('new skip')
simple.print_skip('Hello Wolrd!!')
'''
출력
NEW NEW
S-K-I-P
Hello Wolrd!!
'''
예제를 하나 더 살펴보겠습니다.
class SimpleTest:
def __init__(self):
self.prefix = 'You said: '
self.postfix = '\n' + '-'*10 + '\n'
def print_with_fix(self, string):
print(self.prefix + string + self.postfix)
simple = SimpleTest()
simple.print_with_fix('Hey man, it\'s me Bart Simpson!')
'''
출력
You said: Hey man, it's me Bart Simpson!
----------
'''
'Programming > Python 업무 자동화' 카테고리의 다른 글
4. 클래스(2) - 모듈 활용하기 1 (0) | 2025.03.22 |
---|---|
3. 함수(3) - 파이썬 내장함수 2 (0) | 2025.03.14 |
3. 함수(3) - 파이썬 내장함수 1 (0) | 2025.03.12 |
3. 함수(2) - 함수의 활용 (0) | 2025.03.06 |
3. 함수(1) - 함수의 정의 (0) | 2025.03.06 |