KDT 수업/Python
[파이썬] 18.스페셜 메소드
니니는 진짜 전설이다
2023. 3. 10. 17:10
1. 스페셜 메소드(Special Method)
- __로 시작해서 __로 끝나는 특수함수
- 해당 메소드들을 재구현하면 객체에 여러가지 파이썬 내장 함수나 연산자에 원하는 기능을 부여할 수 있음
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def print_point(self): #(3 , 4)
print(f'({self.x},{self.y})')
def __str__(self):#str()함수를 오버라이딩
return(f'({self.x},{self.y})')
def __add__ (self,pt): # + 연산자를 오버라이딩(객체 + 객체)
new_x = self.x + pt.x
new_y = self.y + pt.y
return Point(new_x, new_y)
def __sub__(self, pt): #- 연산자를 오버라이딩 (객체 -객체)
new_x = self.x - pt.x
new_y = self.y - pt.y
return Point(new_x, new_y)
def __len__(self): #len()
return self.x + self.y
def __getitem__(self,index): #인덱싱을 오버라이딩(객체[인덱스])
if index == 0:
return self.x
elif index == 1:
return self.y
else:
return -1
p1= Point( 3 , 4 )
p1.print_point()
- (3,4)
print((p1)) #str() 생략
- (3,4)
print(str(p1))
- (3,4)
num1= 10
num2= 20
print(num1 + num2)
- 30
print(str(p1))
- (3,4)
p2 = Point(5,8)
print(p1,p2)
- (3,4) (5,8)
p3= p1-p2
print(p3)
- (-2,-4)
print(len(p1))
- 7
print(p1[0],p1[1],p1[100])
- 3 4 -1