파이썬 오버로딩을 하는 방법을 이해하지 못해 질문드립니다.

조회수 967회

1번 문제의 이차원 점을 상속 받고 3차원 의 두점을 입력 받아서 합을 출력하시오. (반드시 메소드를 이용하시오.)

1 //점1의 x 2 //점1의 y 3 //점1의 z

4 //점2의 x 5 //점2의 y 6 //점2의 z

5 7 9 //결과값 출력

라는 문제입니다. 첫번째 문제는 정답이었고, 코드는 아래와 같습니다.

(첫번째 문제는 점 4개를 입력받고 2차원의 두 점의 합을 출력하는 것이었습니다)

class dot:
    x=0
    y=0
    def __init__(self, _x=0, _y=0):
        self.x = _x
        self.y = _y
    def __add__(self, other):
        return str(self.x+other.x)+' '+str(self.y+other.y)
if __name__ == "__main__":
    l1=[]
    for i in range(4):
        l1.append(int(input()))
    dot1 = dot(l1[0],l1[1])
    dot2 = dot(l1[2],l1[3])
    print(dot1+dot2)

이 코드를 a1.py로 저장하고, 문제를 풀기위해 아래와 같이 코드를 작성했습니다.

import a1

class dot3d(a1.dot):
    z=0
    def __init__(self, _z=0):
        super().__init__()
        self.z = _z
    def __add__(self, other):
        return str(self.x + other.x) + ' ' + str(self.y + other.y)+' '+str(self.z+other.z)
l1=[]
for i in range(6):
    l1.append(int(input()))
dot1 = dot3d(l1[0],l1[1],l1[2])
dot2 = dot3d(l1[3],l1[4],l1[5])
print(dot1+dot2)

이 코드를 돌리고 6개의 입력값을 주자 4개의 입력값이 들어왔으며, 너무 많다는 오류를 보냈습니다.

제가 생각하기에는 생성자에서 오버로딩을 잘못한거같은데, 어느 부분이 잘못된것인지 알 수 있을까요?

관련 검색을 해보아도 이해가 잘 되지 않아서 질문 드립니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)