파이썬 오버로딩을 하는 방법을 이해하지 못해 질문드립니다.
조회수 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 답변
-
http://blog.naver.com/PostView.nhn?blogId=dudwo567890&logNo=130164649281 여기서 참고하여 답을 구했습니다.
class dot3d(a1.dot): def __init__(self, _x, _y, _z=0): a1.dot.__init__(self, _x, _y) self.z = _z
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력