KDT 수업/Python

[파이썬] 18.스페셜 메소드

니니는 진짜 전설이다 2023. 3. 10. 17:10

1. 스페셜 메소드(Special Method)

  • __로 시작해서 __로 끝나는 특수함수
  • 해당 메소드들을 재구현하면 객체에 여러가지 파이썬 내장 함수나 연산자에 원하는 기능을 부여할 수 있음
class Point:
  def __init__(selfxy):
      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__(selfpt): #- 연산자를 오버라이딩 (객체 -객체)
    
    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