그 중에서 가장 빈번하게 사용되고 있지만, 정확한 문법 개념을 가지고 접근해야 하는 매직 메소드에 대해서 간단하게 설명해 볼까 합니다. 매직 메소드(Special Method)는 파이썬 전반적인 아키텍처를 담고 있다고 봐도 무방할 정도로 중요한 개념 이라고 볼 수 있습니다. 아울러, 매직 메소드(Special Method)는 파이썬 인터프리터를 통한 코드 실행에 있어서 전체에 걸쳐서 이미 구성되어 있는 메소드라고 설명되고 있습니다. 매직메소드를 정확하게 오버라이딩해서 사용하게 되면 파이써닉 기준에 부합하는 더욱 유연하고 생산성이 있는 코드를 작성하실 수 있다고 생각합니다.
아울러, 파이썬 심화 과정으로 나가기 위해서는 필수적으로 관련 지식을 읽어보시는 것을 추천드려요.
위 제목에 나와 있는 더블 언더스코어("__")로 메소드 이름 앞 뒤에 붙여주면 해당 메소드를 오버라이딩 해서 사용하실 수 있습니다. 이미 우리는 의식하지는 못했지만, 기본적으로 덧셈, 뺄셈 등에도 해당 메소드를 내부적으로 백그라운드 연산을 통해 사용하고 있었던 셈입니다.
더블 언더스코어 된 메소드가 파이썬 내부(Built-in)에 존재하는 함수라면 그 즉시 메소드 오버라이딩을 통해서 함수 본연의 기능을 내가 원하는 객체에 부여할 수 있다는 뜻입니다.
조금 생소하시고 어렵다고 느껴지시면 아래 예제를 확인하시면 쉽게 이해가능하실거예요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 매직메소드 기초
# 기본형
print(int)
# 모든 속성 및 메소드 출력
print(dir(int))
print()
print()
n =100
# 사용
print('EX1-1 -', n +200)
print('EX1-2 -', n.__add__(500))
print('EX1-3 -', n.__doc__)
print('EX1-4 -', n.__bool__())
print('EX1-5 -', n.__mul__(100))
print()
print()
# 클래스 예제1
class Student:
def __init__(self, name, height):
self._name = name
self._height = height
def __str__(self):
return'Student Class Info : {} , {}'.format(self._name, self._height)
7번 라인 : dir 함수를 통해서 int 객체가 가지고 있는 모든 속성 출력 14번 라인 : 기본적인 덧셈 연산 15번 라인 : 내부적으로 __add__ 메소드가 실행되어 덧셈 결과를 반환 16번 라인 : 18번 라인까지 문서 주석 , 참 거짓 반환 , 곱하기 테스트 실행 25번 라인 : 학생 클래스 선언 -> __ge__ , __le__ , __sub__ 매직메소드 오버라이딩에 주목! 52번 라인 : 53번 라인까지 2명의 학생 인스턴스(Instance) 생성 56번 라인~ : 이제 학생 인스턴스를 사용해서 숫자 연산자를 활용해서 계산 및 비교 수행 가능
이번 예제의 핵심이라고 볼 수 있습니다. 즉, 학생 인스턴스를 비교할 경우 내부적으로 오버라이딩한 메소드가 직접 수행이 되어 클래스 내부에 우리가 의도한 학생의 키(Height)를 기준으로 연산이 수행되는 것이지요. 즉, 객체에 추가한 메소드의 기본 기능대로 코드에서 생성된 인스턴스를 유연하게 사용 할 수 있습니다.
그 중에서 가장 빈번하게 사용되고 있지만, 정확한 문법 개념을 가지고 접근해야 하는 매직 메소드에 대해서 간단하게 설명해 볼까 합니다. 매직 메소드(Special Method)는 파이썬 전반적인 아키텍처를 담고 있다고 봐도 무방할 정도로 중요한 개념 이라고 볼 수 있습니다. 아울러, 매직 메소드(Special Method)는 파이썬 인터프리터를 통한 코드 실행에 있어서 전체에 걸쳐서 이미 구성되어 있는 메소드라고 설명되고 있습니다. 매직메소드를 정확하게 오버라이딩해서 사용하게 되면 파이써닉 기준에 부합하는 더욱 유연하고 생산성이 있는 코드를 작성하실 수 있다고 생각합니다.
아울러, 파이썬 심화 과정으로 나가기 위해서는 필수적으로 관련 지식을 읽어보시는 것을 추천드려요.
위 제목에 나와 있는 더블 언더스코어("__")로 메소드 이름 앞 뒤에 붙여주면 해당 메소드를 오버라이딩 해서 사용하실 수 있습니다. 이미 우리는 의식하지는 못했지만, 기본적으로 덧셈, 뺄셈 등에도 해당 메소드를 내부적으로 백그라운드 연산을 통해 사용하고 있었던 셈입니다.
더블 언더스코어 된 메소드가 파이썬 내부(Built-in)에 존재하는 함수라면 그 즉시 메소드 오버라이딩을 통해서 함수 본연의 기능을 내가 원하는 객체에 부여할 수 있다는 뜻입니다.
조금 생소하시고 어렵다고 느껴지시면 아래 예제를 확인하시면 쉽게 이해가능하실거예요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 매직메소드 기초
# 기본형
print(int)
# 모든 속성 및 메소드 출력
print(dir(int))
print()
print()
n =100
# 사용
print('EX1-1 -', n +200)
print('EX1-2 -', n.__add__(500))
print('EX1-3 -', n.__doc__)
print('EX1-4 -', n.__bool__())
print('EX1-5 -', n.__mul__(100))
print()
print()
# 클래스 예제1
class Student:
def __init__(self, name, height):
self._name = name
self._height = height
def __str__(self):
return'Student Class Info : {} , {}'.format(self._name, self._height)
7번 라인 : dir 함수를 통해서 int 객체가 가지고 있는 모든 속성 출력 14번 라인 : 기본적인 덧셈 연산 15번 라인 : 내부적으로 __add__ 메소드가 실행되어 덧셈 결과를 반환 16번 라인 : 18번 라인까지 문서 주석 , 참 거짓 반환 , 곱하기 테스트 실행 25번 라인 : 학생 클래스 선언 -> __ge__ , __le__ , __sub__ 매직메소드 오버라이딩에 주목! 52번 라인 : 53번 라인까지 2명의 학생 인스턴스(Instance) 생성 56번 라인~ : 이제 학생 인스턴스를 사용해서 숫자 연산자를 활용해서 계산 및 비교 수행 가능
이번 예제의 핵심이라고 볼 수 있습니다. 즉, 학생 인스턴스를 비교할 경우 내부적으로 오버라이딩한 메소드가 직접 수행이 되어 클래스 내부에 우리가 의도한 학생의 키(Height)를 기준으로 연산이 수행되는 것이지요. 즉, 객체에 추가한 메소드의 기본 기능대로 코드에서 생성된 인스턴스를 유연하게 사용 할 수 있습니다.