inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

타입 파이썬! 올바른 class 사용법과 객체지향 프로그래밍

상속 (inheritance), 두 번째 이야기

함수 또한 객체라는 것과 관련

197

김백현

작성한 질문수 4

2

(Code 1)

def add1(a, b):
return a + b

print(add1(2, 3))

(Code 2)

class Cal:
def __init__(self):
pass

def __call__(self, a, b):
return (a + b)

add1 = Cal()
print(add1(2, 3))

(Code 1)을 실행할 때, 파이썬 내부에서는 (Code 2)가 발생하고 있다고 이해해도 될까요?

python oop

답변 2

2

윤상석

네 정확하게 이해하셨습니다. 👍

0

김백현

자꾸 여쭤봐서 죄송합니다. 의문이 물밀듯이 생겨나서요. ㅠㅠ

import numpy as np
a = np.arange(9)
x = a.reshape(3, 3)

b = x.transpose()와 c = np.transpose(x) 모두 외관상 동일한 결과물을 반환하되, id(b) != id(c)인데요

질문. 내가 transpose를 해주는 패키지를 만든다고 할 때, 그 기능을
c처럼 매직메서드(init 혹은 call?)로 구현할 것인지
b처럼 non 매직 메서드로 구현할 것인지
아니면 b와 c를 둘 다 가능하게 할 것인지
를 정할 때, 어떤 점들을 고려하는가요?

0

윤상석

질문. 내가 transpose를 해주는 패키지를 만든다고 할 때, 그 기능을
c처럼 매직메서드(init 혹은 call?)로 구현할 것인지
b처럼 non 매직 메서드로 구현할 것인지
아니면 b와 c를 둘 다 가능하게 할 것인지
를 정할 때, 어떤 점들을 고려하는가요?

우선, b의 경우 transpose는 인스턴스 메서드이고 c의 경우 transpose는 클래스 메서드입니다.

numpy를 만든 개발 팀 입장에서는 방법에 차이이기 때문에 단순히 개발자의 편의를 위해 둘 다 접근해서 사용할 수 있도록 제공해준 것입니다.

결국 개발자가 어떤 방식으로 사용하는 것이 가독성이 있을 지 선택하는 것이죠.

++ 머신러닝에서 코드를 돌릴 때 두 가지 방법 모두 성능상 차이가 없습니다. 가독성을 위해 어떤 방식으로 코드를 작성하면 좋을 지 생각하시면 될 것 같습니다.

0

김백현

제가 우왕좌왕하면서 계속 질문을 수정해가지구 번거롭게 해드렸네요. 죄송합니다. 아이고..ㅠㅠ 답변 감사드려요.

0

윤상석

아닙니다. 화이팅입니다~

1

윤상석

아닙니다! 편하게 질문하세요 :)

이해하신 것처럼 이게 가능한 이유는 numpy를 사용하는 엔지니어를 위해 numpy 패키지를 개발한 팀이 그렇게 설계한 것입니다. 

둘 다 되는 방식으로 패키지를 설계하는 경우는 선택인 것 같습니다. 모든 라이브러리가 둘 다 제공하는 것은 아니지만 편의를 위해서 둘 다 되는 방식으로 제공해주는 경우가 있는 것이죠.

0

김백현

감사합니다!

보너스 챕터 마지막 강의 녹화 품질이 문제가 있습니다ㅠㅠ

0

119

1

린터 설치문의

0

371

2

데이터분석에서의 가상환경

0

401

0

print(Robot.how_many()) 하면 None이 뜨는 이유

2

328

2

타입파이썬 문의

1

342

1

프레임워크 질문

1

239

1

문수미님과 같은 내용입니다

1

316

1

클래스 상속 순서? 질문

1

387

2

pip과pip3의 차이

1

2749

1

메서드 리턴 값이 print일 때 print를 찍으면 None

1

250

1

변수의 참조에 대해서 질문입니다.

1

248

1

질문입니다..

1

209

1

pyright 를 이용한 클래스 재정의 코드 실행 문제점 질문 드립니다.

1

456

1

which pyhon이 왜 안될까요..?

1

440

1

pyright 에러나서 질문드립니다.

1

399

1

클래스 변수 관련 질문입니다.

1

303

1

데코레이터 관련 질문

1

230

1

venv 로 만든 가상환경은 파이썬 버젼을 변경하기가 어려운 것 같습니다.

1

1121

1

Final로 타이핑한 변수에 list를 넣는다면

1

228

1

생성자에서 자기 자신 타이핑 하는 경우

1

220

1

f"{객체}" 출력값에서의 숫자값과 id(객체)에서의 숫자값의 차이가 무엇인가요??

1

337

1

타입힌트 실무에서 자주쓰이나요?

2

487

1

스태틱메소드와 클래스메소드

3

267

1

인스턴스와 데이터

2

238

1