• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

클래스 질문

19.12.19 17:24 작성 조회수 215

1

class Fishcakemaker:

   

    def __init__(self, **par):  # 이것 때문에 오류가 났었구나... # 생성자는 이렇게 써주어야 함 __(_표시 2개)

        self.size = 10

        self.flavor = "팥"

        self.price = 100

        

       

        if "size" in par:   # par라는 parameter에 size의 값이 있으면, 그 페러미터로부터 얻어지는 size의 값을 기본값으로 변경

            self.size = par.get("size")

            

    def __del__(self):  

        print("삭제되었습니다")

    

    

    def __str__(self):  # 이 함수명은 정해져 있음

       return "<clss Fishcakemaker (size = {}, flavor = {}, price = {}>".format(self.size, self.flavor, self.price)

    

    

    def show(self):

        

        print("붕어빵 크기{}".format(self.size))

        

class MarketGoods(Fishcakemaker): # 위 클래스를 상속받음

   

    def __init__(self, margin = 1000, **kwargs): # 해당 클래스가 받은 parameter를 상속 받은 클래스에게도 집어 넣는다.

        

        super().__init__(**kwargs)  # 상속받은 class의 생성자를 호출하기 위해서 super를 씀

        self._market_price = self.price + margin  # 여기 있는 price는 Fishcakemaker에서 가져온 것

        

        

    def show(self):

        print(self._market_price)

        

fish1= MarketGoods(flavor = 20, price = 500)

fish1.show()

저는 단지,  market price만 구하고 싶었을 뿐인데,

여기서  부모 클래스에 있는 del 메서드가 실행되어서

삭제되었습니다. 라는 문구가 뜹니다. 

del fish1이라고 써준 것도 아닌데, 왜 자동으로 출력이 

될까요? 감사합니다. 

답변 2

·

답변을 작성해보세요.

0

김명수님의 프로필

김명수

질문자

2019.12.20

그러네요,,! 감사합니다:) 

0

올려주신 코드를 정리해서 실행해봤더니 아무 문제 없이 실행됩니다만...

혹시 들여쓰기나 그런 부분 확인해보셨나요?

제가 수정한 부분은 하나도 없는 코드 입니다.

class Fishcakemaker:
    def __init__(self, **par):  # 이것 때문에 오류가 났었구나... # 생성자는 이렇게 써주어야 함 __(_표시 2개)
        self.size = 10
        self.flavor = "팥"
        self.price = 100

        if "size" in par:   # par라는 parameter에 size의 값이 있으면, 그 페러미터로부터 얻어지는 size의 값을 기본값으로 변경
            self.size = par.get("size")

    def __del__(self):  
        print("삭제되었습니다")
    def __str__(self):  # 이 함수명은 정해져 있음
        return "<clss Fishcakemaker (size = {}, flavor = {}, price = {}>".format(self.size, self.flavor, self.price)
    def show(self):
        print("붕어빵 크기{}".format(self.size))

class MarketGoods(Fishcakemaker): # 위 클래스를 상속받음
    def __init__(self, margin = 1000, **kwargs): # 해당 클래스가 받은 parameter를 상속 받은 클래스에게도 집어 넣는다.
        super().__init__(**kwargs)  # 상속받은 class의 생성자를 호출하기 위해서 super를 씀
        self._market_price = self.price + margin  # 여기 있는 price는 Fishcakemaker에서 가져온 것
    def show(self):
        print(self._market_price)


fish1= MarketGoods(flavor = 20, price = 500)
fish1.show()