inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

남박사의 파이썬 기초부터 실전 100% 활용

클래스는 뭐예요?

클래스 가격비교 기능 질문

251

김명수

작성한 질문수 11

1

클래스 안에 가격비교를 위한 메서드를 다음과 같이 만들어 주셨는데요,

class Fishmaker:

나머지 생략

def_lt_(self, other):

          return self.price< other.price

클래스 밖에서 구현할 때.

fish1 = Fishmaker()  # price = 100이 기본값

fish2 = Fishmaker(price = 500)

def_lt_(self, other):

          return self.price< other.price

1. 여기서 self.price는 기본값으로 설정한객체의 price를 뜻하고,

2. other.price는  클래스 생성자의 parameter를 통해서

변경시켜준 price를 반영하는 객체를 뜻하는 것인가요??

이 부분이 잘 와닿지 않네요..

감사합니다.

python 웹-크롤링

답변 1

0

남박사

class FishMaker:
    def __init__(self, price=100):
        self.price = price
    def __lt__(self, other):
        return self.price < other.price

만약에 FishMaker가 위와 같은 코드라고 가정하겠습니다.

그리고 말씀하신 예제의 상황처럼

fish1 = FishMaker()
fish2 = FishMaker(price=500)

위와 같이 price=100 인 fish1 과 price가 500인 fish2 클래스 객체가 2개 선언되었다고 했을때

이렇게 2개의 객체를 < 연산자를 통해서 비교가 가능하게 하기 위해 __lt__() 함수를 구현했고

price 변수로 2개 객체의 값을 비교하라고 구현한것 뿐입니다.

위와 같이 __lt__() 함수를 구현하지 않으면 객체와 객체를 연산자 (<) 를 통해서 비교도 할 수 없고

__lt__() 함수를 통해 < 연산자를 비교 가능하게 했다면 두 객체사이에 어떤 값을 비교하게 할지를 설정해야 합니다.

그리고 __lt__(self, other) 이렇게 other 로 선언된 변수는

class FishMaker:
    def __init__(self, price=100):
        self.price = price
    def __lt__(self, other):
        print("셀프: {}", self.price)
        print("아더: {}", other.price)
        return self.price < other.price

fish1 = FishMaker()
fish2 = FishMaker(price=200)

if fish1 < fish2:
    print("fish2가 큼")

위의 코드처럼 __lt__() 함수 내부에서 self.price 와 other.price를 각각 프린트 해보면

if fish1 < fish2 같은 상황에서 에서 fish2가 fish1 내부의 __lt__(self, other) 의 other로 넘어가서 비교가 되게 됩니다.

사실 별게 아닌데 말로 설명하니 더 어렵게 느껴지는 부분이 있습니다.

위에서 처럼 print()문을 직접 찍어보면 어떤 객체가 other로 넘어왔는지 쉽게 확인 하실수 있습니다.

도움이 되셨으면 좋겠습니다. 더 궁금한 사항은 질문 주시기 바랍니다. ^^

38강 = 연산자 더하고 빼기

0

60

2

주석처리

0

117

1

함수의 파라미터값 msg

0

155

1

강의자료 이미지 안나옴

0

239

3

강의자료 질문 두번째

0

165

3

강의자료 관련 질문

0

116

1

파이썬 예외 처리 try / except 파일 처리 코드가 실행이 안됩니다.

0

235

1

소수 너무 어려워요

0

245

1

imagefont 함수 사용

0

239

1

pylint

0

357

1

add 함수 문의 ㅠㅠ

0

283

1

형식 문의드립니다.

0

210

1

변수 명을 왜 src, tar로 하셨는지 궁금합니다.

0

602

1

숫자야구 코드를 짜 봤는데 뭔가 이상합니다.

0

253

1

zsh: command not found: pylint

0

269

1

텔레그램 봇 만들기 코드 실행이 안됩니다 박사님..ㅠ

0

546

1

질문드립니다.

1

374

2

list.reverse() 출력에 대해서 질문있습니다.

1

433

1

데코레이터 함수 및 동작시간 질문입니다.~

1

323

2

opencv 사용하면서 궁금한점 (해상도)

1

781

1

질문드립니다.

1

299

1

아래 오류가 뜨면서 vscode가 컴파일이 되지 않는데.. 혹시 왜이럴까요?

1

445

1

크롤링안되는 현상 문의 드립니다.

1

421

1

파이썬 크롤링 관련 문의

1

278

1