2022. 08. 17(수) Python 공부 13일차

Dylan·2022년 8월 17일
0
post-thumbnail

클래스 연산자 재정의 이해 및 사용

# Point
# 2차원 좌표평면 각 점(x, y)
# 연산
# 두점의 덧셈, 뺄셈 (1, 2) + (3, 4) = (4, 6)
# 한점과 숫자의 곱셈 (1, 2) * 3 = (3, 6)
# 그 점의 길이 (0, 0) 부터의 거리
# x, y 값 가져오기
# 출력하기

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    # 두점의 덧셈, 뺄셈 (1, 2) + (3, 4) = (4, 6)
    def __add__(self, pt):
        new_x = self.x + pt.x
        new_y = self.y + pt.y

        return Point(new_x, new_y)

    # 두점의 덧셈, 뺄셈 (1, 2) + (3, 4) = (4, 6)
    def __sub__(self, pt):
        new_x = self.x - pt.x
        new_y = self.y - pt.y

        return Point(new_x, new_y)

    # 한점과 숫자의 곱셈 (1, 2) * 3 = (3, 6)
    def __mul__(self, factor):
        return Point(self.x * factor, self.y * factor)

    # 그 점의 길이 (0, 0) 부터의 거리
    def __len__(self):
        return self.x ** 2 + self.y ** 2

    # x, 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(3, 4)
p2 = Point(2, 7)
p3 = p1 + p2
p4 = p1 - p2
p5 = p1 * 3


print(p1)
print(p2)
print(p3)
print(p4)
print(p5)
print(len(p1))
print(p1[0])
print(p1[1])

# (3, 4)
# (2, 7)
# (5, 11)
# (1, -3)
# (9, 12)
# 25
# 3
# 4

클래스 연습문제 풀이

연습문제)

  • 복소수 클래스를 정의 해봅시다.
  • 덧셈, 뺄셈, 곱셈 연산자 지원
  • 길이 (복소수의 크기) 지원
  • 복소수 출력 '1 + 4j'와 같이 표현
  • 비교 연산 ==, != 지원
  • =, <=, <, > 연산 지원
  • 절대값 지원

0개의 댓글