inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)

매직 메소드(1-2)

_add__() 의 위치가 궁금 합니다.

400

여섯포반장

작성한 질문수 14

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 인건가요?

 

 

django python

답변 1

0

좋은사람

네 내부적으로 type 클래스 하위에 구현되어 있고

구글 검색으로 __add__ 구현 형태를 파이썬 공식문서에 가보시면 확인 하실 수 있어요~

열심히 하시네요!!

0

김제하

강사님 안녕하세요! 질문자는 아닙니다만, 질문 게시글로 다시 쓰기보다는  댓글로 비슷한 주제로 다는 것이 다른 분들이 볼 때도 좋지 않을까 하여 댓글로 여쭤봅니다. 

1. 다음과 같이 이해하는 게 맞을까요??

--------

그렇다면 print(type(int)) 에서  <class 'int> 를 확인했고, print(dir(int)) 에서 '__add__'라는 매직 메소드가 int class에 있다는 걸 확인했다.  

' + ' 연산자를 사용하면 

'int' class 에 __add__ 라는 메소드를 호출하여 계산한다.

그런데, 이는 magic method이므로 사용자가 원하는 대로 overriding을 하여 customizing 할 수 있다.  

그래서

class Fruit():
def __init__(self, name, price):
self.name = name
self.price = price

def __add__(self, other):
return (self.price + other.price) + 0.8

이와 같이 작성할 수 있다.  

----

 

2. 그러면 두 번째 질문입니다. 다른 질문 글에서 저럴 경우 '+' 로 기본 built in 함수 호출로 재귀적으로 호출되지 않나 라는 내용을 확인했습니다.  

이에 대한 답변으로 '클래스 형태로 구현해서 메소드 상속을 통해서 구현해야 합니다. 나중에 수업에서 나와요~' 라고 하셨습니다.  상속, 오버라이딩 부분이면 level 3 강의까지 기다려야 하나요??

먼저 level 3의 상속 부분을 듣고 와도 이해하는데 문제가 되지 않나요???

 

진도미확인 (진도가 안 넘어감)

0

54

1

RuntimeError: There is no current event loop in thread 'MainThread'

0

96

1

chapter 07-01 실행 오류

0

80

1

Chapter05-04 : sum_func의 합이 이중 출력됩니다.

0

91

2

45. 병렬성 2 - Futures(5-1) wait가 의도된 대로 동작하지 않습니다.

0

110

2

멀티스레딩 - 44. 병렬성 1 - Futures(4-2)

0

83

2

chapter05_02 클로저 질문사항 !

0

64

1

LV1 설정

0

96

2

매직 메소드의 호출 방법 차이 문의

0

140

2

왜 numbers리스트를 만들때 str으로 숫자를 감싸나요?

0

108

2

스크랩핑 실습 중 Mac OS 인증서 문제

0

139

1

AsyncIO 멀티 스크랩핑 실습 예제 관련 질문

0

182

1

강의자료가 영상과 다릅니다

0

264

2

closure.cell_contents 초기화 하기 문의

0

139

2

map함수 사용 시, list변환 방법 문의

0

354

2

__mul__ 백터 * 숫지, 백터 * 백터 처리

0

152

1

del처리후 질문입니다.

0

165

1

car_list(car1,car2,car3) 인스턴스 tuple 타입 문의

0

236

1

coroutine에 대한 질문

0

251

1

제너레이터 이터레이터 질문이 있습니다.

0

258

1

atom install package search not working

0

283

1

Magic Method - Not Implemented

0

409

1

가상환경 질문!

0

411

1

병렬처리 추가 질문이 있습니다.

0

255

1