__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 |