728x90
반응형
SMALL
1. 스페셜 메소드(Special Method)
-
해당 메소드들을 재구현하면 객체에 여러가지 파이썬 내장 함수나 연산자에 원하는 기능을 부여할 수 있음
-
__시작해서__ 로 끝나는 특수 함수
- 클래스의 전체 메소드를 알아보기
help(클래스명)
-
파이썬의 str 클래스 메소드를 오버라이딩을 해보자.
# Point 클래스는 생성자를 통해 (x, y) 좌표를 입력받음
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
# (3, 4) 튜플로 구성된 좌표 출력
def print_point(self):
print(f'({self.x}, {self.y})')
# 부모 클래스의 str()함수를 오버라이딩
def __str__(self):
return (f'({self.x}, {self.y})') # return 값으로 반환, 변수에 저장 가능
# + 연산자를 오버라이딩 함 (객체 + 객체)
# 새로만든 객체를 Point 클래스를 통해 객체를 생성함 -> 메소드 사용 가능
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)
# len(): 두 좌표의 거리의 합이 되도록 오버라이딩
def __len__(self):
return self.x + self.y
# indexing을 오버라이딩 (객체[0])
def __getitem__(self, index):
if index == 0:
return self.x
elif index == 1:
return self.y
else: # index는 0, 1만 존재(좌표)
return -1
p1 = Point(3, 4) # 객체 생성
p1.print_point()
>>> (3, 4) # print로 출력
# __str__
print(str(p1))
>>> (3, 4)
# str() 생략 되어 있음
print(p1)
>>> (3, 4)
p2 = Point(5,8) # 객체 생성
# __add__
p1 + p2
>>> <__main__.Point at 0x7f16da389430> # 객체
p3 = p1 + p2
print(p3)
>>> (8, 12)
# __sub__
p1 - p2
>>> <__main__.Point at 0x7f16da446bb0> # 객체
p4 = p1 - p2
print(p4)
>>> (-2, -4)
# __len__
print(len(p1))
>>> 7
# __getitem__
p1[0]
>>> 3
p3[1]
>>> 12
p1[100]
>>> -1
728x90
반응형
LIST
'Python > Basic' 카테고리의 다른 글
[파이썬, Python] 예외 처리에 대해 알아보자 🧐 (0) | 2023.03.13 |
---|---|
[파이썬, Python] 모듈(Module)에 대해 알아보자 🧐 (1) | 2023.03.10 |
[파이썬, Python] 상속 - 클래스 상속, 메소드 오버라이딩, 다중 상속 (0) | 2023.03.10 |
[파이썬, Python] 객체지향 프로그래밍 - 객체 지향과 클래스(Class) (0) | 2023.03.09 |
[파이썬, Python] 변수의 범위 - 스코프(Scope), 지역변수(local 변수), 전역변수(global 변수), global 키워드 (0) | 2023.03.09 |