__str__

class point:
    def __init__(self,x,y):
        self.x = x
        self.y = y
    def __str__(self):
        return '({}, {})'.format(self.x, self.y)
    
p1 = (1,2)
print(p1)

__str__ 을 통해 우리가 만든 커스텀한 class 역시 파이썬은 기본 타입처럼 자연스럽게 쓸 수 있다.

 

 

 

class point:
    def __init__(self,x,y):
        self.x = x
        self.y = y
        
    def add(self, pt):
        new_x = self.x + pt.x
        new_y = self.y + pt.y
        return point(new_x, new_y)

    def __str__(self):
        return '({}, {})'.format(self.x, self.y)
    
p1 = point(1,2)
p2 = point(2,3)
p1.add(p2)

p1.add() 함수를 이용하면 내가 만든 클래스에서 더하기 연산을 할 수 있다.

그런데 그냥 add() 함수 보단 그냥 + 연산이 더 치기가 편하다.

 

class point:
    def __init__(self,x,y):
        self.x = x
        self.y = 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 __str__(self):
        return '({}, {})'.format(self.x, self.y)
    
p1 = point(1,2)
p2 = point(3,4)
print(p1-p2)

__add__ 와 __sub__는 기본적으로 + 와 - 연산을 이용할 수 있게 해준다.

이것도 기본 타입처럼 자연스럽게 쓸 수 있다.

 

 

class point:
    def __init__(self,x,y):
        self.x = x
        self.y = 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 __mul__(self, factor):
        return point(self.x * factor, self.y * factor)
    
    def __len__(self): # 원점으로부터의 길이
        return self.x**2 + self.y**2
    
    '''
    def get_x(self): # x만 가져오기
        return self.x
    
    def get_y(self): # y만 가져오기
        return self.y
    '''
    def __getitem__(self,index):
        if index == 0:
            return self.x
        elif index == 1:
            return self.y
        else :
            return -1
        
    def __str__(self):
        return '({}, {})'.format(self.x, self.y)
    
p1 = point(1,2)
p2 = point(3,4)

print(p1, p2)
print(p1-p2)
p3 = p1 * 3

print(len(p1))

print(p1[0]) # == print(p1.get_x())
print(p1[1]) # == print(p1.get_y())

기본 타입처럼 만들 수 있는 

__add__

__sub__

__mul__

__len__

__getitem__

__str__ 

등이 있다.

'📌 Python' 카테고리의 다른 글

Python - 정규표현식 (1)  (0) 2021.01.22
Python - 복소수 함수 만들기  (0) 2021.01.21
Python - method override, super  (0) 2021.01.20
Python - inheritance(상속)  (0) 2021.01.20
Python - method  (0) 2021.01.20
복사했습니다!