인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

alphard.soo님의 프로필 이미지
alphard.soo

작성한 질문수

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

매직 메소드(1-2)

클래스 내 함수 정의할 때 인스턴스 입력을 못 받습니다ㅠ

작성

·

289

0

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

    def __str__(self):
        return f'str, Fruit Class Info : {self.name}, {self.price}'
    
    def __repr__(self):
        return f'repr, Fruit Class Info : {self.name}, {self.price}'

    # def __add__(self,x, y):
    #     print('called__add__')
    #     return self.price + x.price + y.price

    def __add__(self, x):
        print('called__add__')
        return self.price + x.price
    
    def __sub__(self, x):
        return self.price - x.price

s1 = Fruit('Orange', 6000)
s2 = Fruit('Banana', 3000)
s3 = Fruit('Apple', 5000)

# print(s1 + s2 + s3)
print(s1 + s2)
print(s1)

 

Chpater03-01 수업 내용 중에

x 자리에 s2가 알아서 찾아 들어가는 게 신기해서

하나 더 넣어보면 어떨까 해서 s3을 넣어봤습니다

역시나 안되더군요 ㅠ

주석 처리 해놓은 부분이 작동이 되지 않아 여쭤봅니다

 

그래서 검색을 해봤는데 답을 못찾아서 여쭤봅니다

 

하나 더 넣어서

s1 + s2 + s3

구현 하려면 어떤 방법을 써야 할까요?

 

답변에 미리 감사드립니다

답변 1

0

alphard.soo님의 프로필 이미지
alphard.soo
질문자

작동은 합니다만 뭔가 찝찝하네요ㅠ

def \__add__ 내부에

클래스를 다시 호출하는 방법으로 해결한 글을 봐서

적용해보니 작동은 잘합니다만..

클래스를 다시 호출해서 그런지

def \__srt__ 에서 정의한 형식 대로 출력이 되네요

 

그게 20년도 글이었는데

선생님께서도 *args 이용하라고 답변이 달려있는데

아직 미천하여 2시간 하다 포기했네요

나이먹고 하려니 하 힘드네요

차차 나아지겠쥬

 

23년 현재도 보시려나 모르겠지만

강의 감사합니다

 

alphard.soo님의 프로필 이미지
alphard.soo

작성한 질문수

질문하기