이전 시간에는 클래스 기초, 클래스 심화, 그리고 클래스 안의 메서드의 종류에 대해 배웠습니다. 이번 시간에는 Class 안에서 사용할 수 있는 특별한 메서드들에 대해 알아보도록 하겠습니다.
Class의 특별한 메서드들
Class에는 특별한 메서드들이 있습니다. 저희는 그중에 하나를 이미 알고 있습니다. 바로 __init__() 메서드입니다. 이 메서드는 Class의 Instance가 선언됨과 동시에 실행되는 메서드입니다.
이 __init__처럼 미리 이름과 용법이 정의된 Class 메서드들을 알아보겠습니다.
__repr__()
__repr__ 메서드는 Class로부터 Instance가 선언될 때, 혹은 Instance가 호출될 때, 그리고 Instance를 print 할 때 실행되는 메서드입니다.
저에 대한 정보를 담은 human Class를 만들었습니다. __repr__ 메서드는 저의 이름과 직업을 print 하도록 코딩했습니다.
class human():
def __init__(self):
self.name = 'kevin'
self.job = 'blogger'
self.gender = 'man'
# 인스턴스를 호출하거나 print하면 동작
def __repr__(self):
return f'I am {self.name} and my job is {self.job}'
아래는 __repr__ 메서드의 사용 예시입니다. 각각의 예시를 읽어보시고, 어떤 점에서 차이가 있는지 확인해 보시기 바랍니다.
# 첫 번째: 생성된 인스턴스를 print할 때
me = human()
print(me)
# 두 번째: 인스턴스를 생성/선언할 때
human()
# 세 번째: 인스턴스를 호출할 때
me = human()
me
__del__()
__del__ 메서드는 인스턴스를 삭제하고 값을 return 해줍니다. 이 return이 __del__ 메서드와 del 함수의 차이점이자 핵심입니다. 우선 아래 코드를 보시면, __del__ 메서드를 실행하면 print를 하도록 설정해 둔 코드입니다.
class human():
def __init__(self):
self.name = 'kevin'
self.job = 'blogger'
self.gender = 'man'
def __del__(self):
return "class가 성공적으로 삭제되었습니다."
# __del__ method 실행하는 방법
me = human()
me.__del__()
# 위 코드의 실행결과
'class가 성공적으로 삭제되었습니다.'
재밌는 건 __del__ 메서드의 return 값을 5로 하면 인스턴스가 삭제된 다음 5를 return 한다는 점입니다. del 함수를 사용해도 인스턴스를 지울 수 있지만, 아무런 피드백이 없어서 실행이 잘 됐는지 긴가민가 할 텐데요. 인스턴스를 삭제하고 메시지를 피드백받고 싶거나, 삭제 이후 어떤 액션이 이어지도록 하려면 __del__ 메서드를 사용하시면 될 것 같습니다.
class human():
def __init__(self):
self.name = 'kevin'
self.job = 'blogger'
self.gender = 'man'
def __del__(self):
return 5
me = human()
a = me.__del__()
print(a) # a에는 return된 5가 들어있다.
__add__()
__add__ 메서드는 인스턴스 간 덧셈 연산을 지원합니다. 덧셈 연산은 사용자가 정의하기 나름인데요. 저는 인스턴스의 이름 속성을 더하는 __add__ 메서드를 만들어보겠습니다.
__add__ 함수는 자기 자신(인스턴스)과 다른 인스턴스를 인자로 받아서 인스턴스의 name 속성에 접근하여 두 문자열을 더한 값을 반환합니다.
class human():
def __init__(self,name,job):
self.name = name
self.job = job
def __add__(self, other_instance):
return self.name + ' and ' +other_instance.name
me = human('kevin', 'blogger')
you = human('Ji','banker')
me.__add__(you)
#위 코드의 실행 결과
'kevin and Ji'
'Python > 기초' 카테고리의 다른 글
[파이썬/Python] 함수 심화: 인자 전달 방법과 default 값 (0) | 2023.07.13 |
---|---|
[파이썬/Python] 예외 처리 개념과 실습(feat. 대표 오류 메세지) (0) | 2023.07.13 |
[파이썬/Python] 정적 메서드, 클래스 메서드, 인스턴스 메서드 (0) | 2023.07.12 |
[파이썬/Python] 이해하기 쉬운 데코레이터 원리 (0) | 2023.07.11 |
[파이썬/Python] Class 심화: 상속에 대한 모든 것 (0) | 2023.07.11 |
댓글