
*이 글을 읽기전에 작성자 개인의견이 있으니, 다른 블로그와 교차로 읽는것을 권장합니다.*
1. 스페셜 메서드
파이썬의 스페셜 메서드 (또는 매직 메서드라고도 불림)는 더블 언더스코어(__)로 시작하고 끝나는 메서드 이름을 갖습니다. 이 메서드들은 특정 구문이나 내장 함수를 사용할 때 파이썬 인터프리터에 의해 자동으로 호출됩니다.
예를 들어, 객체에 대해 + 연산자를 사용하면 해당 객체의 add 메서드가 호출됩니다. 또는 len() 함수를 사용하면 len 메서드가 호출됩니다.
매직 메서드의 종류는 6자리로, 다음과 같이 있습니다.
- __init__
- __str__
- __add__
- __len__
- __getitem__
- __call__
1-1. __init__
객체를 초기화해주는 메서드입니다. class문에서 생성자함수를 사용할 때 주로 사용됩니다. class문을 객체에 넣어서 출력할때, ()안에 매개변수를 넣어서 출력하는데, 이때 생성자.매개변수의 결과값을 출력하게 합니다.
#__init__메서드
class Sell:
def __init__(self,t):
self.t=t
se=Sell('제목') # self.t<-'제목' 삽입
print(se)

1-2. __str__
객체를 문자열로 표현하는 메서드입니다. print()함수나 str()함수를 사용할 때 호출됩니다.
#__str__메서드
class Sell:
def __init__(self,t):
self.t=t
se=Sell(5) # self<-'제목' 삽입
print(se)
print(str(se))

1-3. __add__
+ 연산자를 호출할 때 사용되는 메서드입니다.
# __add__메서드
class Sell:
def __init__(self,t):
self.t=t
def __add__(self,selt): #add오버라이딩
return self.t + selt.t
se1=Sell(3) #t값
se2=Sell(5) #t값
result=se1+se2 #__add__호출->
print(result)

1-4. __len__
len()함수를 사용할 때 호출되는 메서드입니다.
# __len__메서드
class Ad:
def __init__(self):
self.weapon=[1,2,3,4,5]
def __len__(self):
return (len(self.weapon))
ad=Ad()
print(ad)
print(len(ad))
1-5. __getitem__
인덱싱을 사용할 때 호출되는 메서드입니다.
# __getitem__
class Ap:
def __init__(self,x,y):
self.x=x
self.y=y
def __getitem__(self,con):
if con ==0:
return self.x
elif con ==1:
return self.y
else:
return -1
ap=Ap(4,2)
print(ap[1]) #인덱스 사용
print(ap[0])
print(ap[5])

1-6. __call__
객체를 함수처럼 호출할 때 사용되는 메서드입니다. 객체를 선언하면, 함수가 발동하는 형식으로 객체 = 함수 라고 이해해야 합니다.
# __call__
class Co: # *는 가변형 요소값을 넣을 때 나오는 튜플자료형,
# **는 딕셔너리자료형 key값과 value값 형식 지정
def __call__(self, *args, **kwargs):
print(f'{args}, {kwargs}')
co=Co()
co(1,2,3,4,5, one='first', two='second', three='third', four='fourth')

참고: *를 붙일 경우 불변형인 튜플자료형 출력, **는 key값과 value값을 가진 딕셔너리 자료형 출력
'Python 기초' 카테고리의 다른 글
파이썬 예제(과제)-5. class문 (0) | 2024.03.20 |
---|---|
파이썬 기초(17)-예외처리 (0) | 2024.03.19 |
파이썬 기초(15)-상속 (0) | 2024.03.18 |
파이썬 예제(과제)-4.객체지향 프로그래밍 (0) | 2024.03.18 |
파이썬 기초(14)-객체지향(OOP)과 클래스(Class) (0) | 2024.03.18 |