작성
·
372
0
class Fruit():
def __init__(self, name, price):
self.name = name
self.price = price
def __add__(self, other):
return self.price + other.price
f1 = Fruit('Orange', 7000)
f2 = Fruit('apple', 3000)
print(f1+f2)
print(dir(f1))
위 소스 보면 + 를 할면 알아서 __add__() 메소드가 호출 되는데요
print( dir(int)) 해보면
네임스페이스에 __add__가 보이고 해서 제 생각에
__add__() 메소드는 어딘가에 존재 하는 메소드 인데
int 클래스에서도 override 했고, Fruit 이라는 class에서도 override 했고
문법에서 + (더하기)를 하면 내부적으로 _add__()를
호출 하는구나 생각했습나다.
__add__() 메소드를 가지고 있는 class는 먼가요
자바처럼 Object 인건가요?
답변 1
0
강사님 안녕하세요! 질문자는 아닙니다만, 질문 게시글로 다시 쓰기보다는 댓글로 비슷한 주제로 다는 것이 다른 분들이 볼 때도 좋지 않을까 하여 댓글로 여쭤봅니다.
1. 다음과 같이 이해하는 게 맞을까요??
--------
그렇다면 print(type(int)) 에서 <class 'int> 를 확인했고, print(dir(int)) 에서 '__add__'라는 매직 메소드가 int class에 있다는 걸 확인했다.
' + ' 연산자를 사용하면
'int' class 에 __add__ 라는 메소드를 호출하여 계산한다.
그런데, 이는 magic method이므로 사용자가 원하는 대로 overriding을 하여 customizing 할 수 있다.
그래서
이와 같이 작성할 수 있다.
----
2. 그러면 두 번째 질문입니다. 다른 질문 글에서 저럴 경우 '+' 로 기본 built in 함수 호출로 재귀적으로 호출되지 않나 라는 내용을 확인했습니다.
이에 대한 답변으로 '클래스 형태로 구현해서 메소드 상속을 통해서 구현해야 합니다. 나중에 수업에서 나와요~' 라고 하셨습니다. 상속, 오버라이딩 부분이면 level 3 강의까지 기다려야 하나요??
먼저 level 3의 상속 부분을 듣고 와도 이해하는데 문제가 되지 않나요???